2012-01-26 40 views
0

secuserとenduserの2つの異なるタイプのsecuser、SecRoleとEndRole を作成できます。私のsecuserとsecroleは私の病院や医者、エンドユーザの管理者に与えられ、エンドロールはエンドユーザに与えられます。私の病院プロジェクトGrails Spring Security SecUser

私はsecuserとsecroleテーブルを持っていますが、s2-quickstartコマンドでenduserとendroleコマンドを作成したときに、ドメインクラスを取得できるようになり、ログインとログアウトコントローラをオーバーライドできませんでしたブートストラップにenduserオブジェクトendroleオブジェクトを作成する

class BootStrap { 
    def springSecurityService 
    def init = { servletContext -> 

     /* 
     def userRole = EndRole.findByAuthority('ROLE_USER') ?: new EndRole(authority: 'ROLE_USER').save(failOnError: true) 

     def endadminUser = EndUser.findByUsername('endadmin') ?: new EndUser(
     username: 'endadmin', 
     password:'endadmin',enabled: true).save(failOnError: true) 

     if (!endadminUser.authorities.contains(userRole)) { 
     EndUserEndRole.create endadminUser, userRole 
     } 
     */ 

     def x= new EndRole(authority: 'ROLE_USER') 
     println(" new fresh  "+x.authority) 
    } 
    def destroy = { 
    } 
} 

答えて

1

あなたが好きなだけ多くの種類のユーザーが、あなたがカスタムUserDetailsServiceが必要になることをサポートする。これは一般的なことですので、ドキュメントにはセクションがあります。 http://grails-plugins.github.com/grails-spring-security-core/docs/manual/

複数の役割クラスが必要だと思うのはなぜか分かりませんが、「11 Custom UserDetailsS​​ervice」を参照してください。管理者と医師の役割名が異なるSecRoleのインスタンスを作成するだけです(例: new SecRole(authority: 'ROLE_DOCTOR').save(),new SecRole(authority: 'ROLE_ADMIN').save()

おそらく異なるセキュリティクラスのユーザークラスは必要ありません(セキュリティ以外の理由で、セキュリティ以外の理由で異なる属性をサポートする必要があります)。 SecUserインスタンスを作成し、必要なロール(EndUserEndRole.create)を付与するだけです(ROLE_DOCTORまたはROLE_ADMIN)。

プラグインのドキュメントだけでなく、Spring Securityのドキュメントhttp://static.springsource.org/spring-security/site/docs/3.0.x/reference/springsecurity.htmlも読んでください。このようなことは、Webサイトを安全にする方法が気にかからない場合には実装が非常に重要です。

+0

私はこの問題を解決したあなたの返信のために@Burt Beckwithありがとう、私の問題はクラス間の私の関係だった。私はプロジェクトの半分を正常に完了しましたが、私は助けてください私を助けてくださいhttp://stackoverflow.com/questions/9046596/match-onesecrole-among-many-roles-of-secuser-grails – user1170646

関連する問題