2012-08-27 33 views
0

在我的grails應用程序中使用簡單的過濾器登錄&安全性。 現在我需要根據登錄的用戶角色使用不同的登錄憑證連接到db - test1。如果管理員登錄獲取寫入權限,則登錄&,如果用戶角色登錄,則爲只讀。 如何使用濾波器實現它?根據用戶角色訪問數據庫。在這裏使用過濾器來保證安全

DataSource.groovy的

environments { 
development { 

/*IF LOGIN 'ADMIN' - SHOULD CONNECT USING THIS 
dataSource { 
      username = 'admin' 
      password = 'Guard1an' 
      url = "jdbc:jtds:sqlserver://test1:1433; 
      MVCC=TRUE" 
      dbCreate = 'update' 
     } 
/*IF LOGIN 'USER' - SHOULD CONNECT USING THIS*/ 

dataSource {   
       dbCreate = "update" // one of 'create', 'create-drop','update' 
       username = 'user' 
       password = 'tesoyear' 
       url = "jdbc:jtds:sqlserver://test1:1433; 
     } 
dataSource_wldb1 { 
      username = 'gdx' 
      password = 'pinoil' 
      url = "jdbc:jtds:sqlserver://wldb:1433/IVR_GUARDIAN" 
      dbCreate = 'update' 
    } 
} 

SecuirityFilter.groovy

class SecurityFilters { 
    def filters = { 
    loginCheck(controller: 'load', action: '*') { 
     before = { 
      if (!session.user && !actionName.equals('login')) { 
       flash.message = "User is not Logged in.Please login " 
       redirect(controller:'user', action: 'index') 
       return false 
      } 
     } 
    } 

    } 
} 

回答

0

如果你想保護的控制器,它應該是足夠的(更好)使用@Secured註解。這使您可以通過指定所需的用戶角色來確保整個控制器或單一方法的安全。請查詢http://blog.springsource.org/2010/08/11/simplified-spring-security-with-grails/瞭解更多詳情。下面還有一個例子。

如果您需要更復雜的安全性,請選中spring-security-acl插件,該插件允許爲特定數據庫對象授予權限。

package org.example 

import grails.plugins.springsecurity.Secured 

class PostController { 

    @Secured(['ROLE_USER']) 
    def followAjax = { ... } 

    @Secured(['ROLE_USER', 'IS_AUTHENTICATED_FULLY']) 
    def addPostAjax = { ... } 

    def global = { ... } 

    @Secured(['ROLE_USER']) 
    def timeline = { ... } 

    @Secured(['IS_AUTHENTICATED_REMEMBERED']) 
    def personal = { ... } 
} 
+0

嗯,謝謝你的回覆,但我沒有使用彈簧安全插件,所以想用簡單的過濾器(見我的上面的代碼)。沒有插件可能嗎? – sana

+0

我寫了這個答案,因爲有一個標籤'spring-security'。如果你已經在會話中使用過用戶(你已經在過濾器中使用它作爲'session.user'?),這只是查詢用戶角色的某個數據庫/文件的問題。現在你的問題到底是什麼? – droggo

+0

請參閱我的datasource.groovy.this加載時,我運行 - 應用程序在用戶登錄之前的項目和在會話中的角色,所以我想做的事情,使數據源使用單獨的憑據數據庫連接取決於哪個rle登錄。做到這一點是我真正的問題。 – sana

相關問題