0

Grails 2.0.4 を使用しています。アプリケーションで、アプリケーションにアクセスするために Facebook 認証を追加したいと考えています。現在の Grails バージョン用に Spring Security プラグインを既にインストールしており、正常に動作しています。Facebookユーザーからもアクセスできるようにスケーリングしたいと思います。そのために、SpringSecurityFacebookプラグインをインストールしました。SpringSecurityCore プラグインのバージョンは 1.2.7.2 で、SpringSecurityFacebook プラグインのバージョンは 0.15 です。

SpringSecurityCore プラグインを使用して、それぞれ User.groovy と UserRole.groovy である User と Role のドメイン クラスを構成しました。SpringSecurityCore プラグインに User & UserRole クラスの結合クラスを作成させたので、データベース テーブル user_authorities が作成されました。ここで、SpringSecurityFacebook プラグインに問題が発生します。これらの両方のプラグインをインストールしてアプリケーションを実行すると、SpringSecurityCore プラグインが正常に構成され、SpringSecurityFacebook プラグインが正常に構成されたことが示されます。その後、以下に示すエラーが発生します。

ERROR facebook.DefaultFacebookAuthDao  - Can't find authority join class (PersonAuthority). Please configure 'grails.plugins.springsecurity.userLookup.authorityJoinClassName' value, or create your own 'List<GrantedAuthority> facebookAuthService.getRoles(user)'
ERROR facebook.DefaultFacebookAuthDao  - UserDetailsService from spring-security-core don't have method 'createUserDetails()'

さて、私の質問は、SpringSecurityCore プラグインがオプションであると述べているため、アプリケーションで作成されたテーブルのドメイン クラスに参加する必要があるかどうかです。また、必要な場合は、カスタム ロジックを持つことが必須ですか、それともその名前でドメインを作成するオリジナルのロジックが機能しますか?

提案は大歓迎です...

4

1 に答える 1

0

アプリはPersonAuthorityクラス名を使用するように構成されていますが、UserRoleクラスを使用していると言いました。Spring Security CorePersonAuthorityデフォルト値です

grails.plugins.springsecurity.userLookup.authorityJoinClassName次のように、正しい値で構成するだけです。

grails.plugins.springsecurity.userLookup.authorityJoinClassName='UserRole'
于 2013-09-25T06:03:47.133 に答える