0

我正在使用 Grails 2.0.4。使用该应用程序,我想添加 facebook 身份验证来访问我的应用程序。我已经为当前的 Grails 版本安装了 Spring Security 插件,它工作正常。我想扩展它以使 Facebook 用户也可以访问它。为此,我安装了SpringSecurityFacebook插件。SpringSecurityCore 插件版本为 1.2.7.2 & SpringSecurityFacebook 插件版本为 0.15。

使用 SpringSecurityCore 插件,我为用户和角色配置了域类,它们分别是 User.groovy 和 UserRole.groovy。我让 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类。PersonAuthority是Spring Security Core的默认值

只需配置grails.plugins.springsecurity.userLookup.authorityJoinClassName正确的值,例如:

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