我正在使用Grails 2.0.4。使用该应用程序,我想添加facebook身份验证来访问我的应用程序。我已经为当前的Grails版本安装了Spring Security插件,它运行正常。我想扩展它以便从Facebook用户访问。为此,我安装了SpringSecurityFacebook插件。 SpringSecurityCore插件版本是1.2.7.2& SpringSecurityFacebook插件版本为0.15。
使用SpringSecurityCore插件,我为User& amp;配置了域类。 User.groovy& UserRole.groovy分别。我已经让SpringSecurityCore插件为User& amp;创建了加入类。 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插件声明它是可选的。如果需要,那么是否必须使用我们的自定义逻辑或创建具有该名称的域的原始逻辑?
欢迎提出意见......
答案 0 :(得分:0)
您的应用已配置为使用PersonAuthority
班级名称,但您说您正在使用UserRole
班级。 PersonAuthority
是来自Spring Security Core的default value
只需使用正确的值配置grails.plugins.springsecurity.userLookup.authorityJoinClassName
,例如:
grails.plugins.springsecurity.userLookup.authorityJoinClassName='UserRole'