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
           }
       }
    }

  }
}
4

1 に答える 1

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 = { ... }
}
于 2012-08-27T18:55:14.903 に答える