【发布时间】:2014-07-02 11:15:26
【问题描述】:
我正在使用
compile ':spring-security-core:2.0-RC2'
compile ':spring-security-oauth:2.0.2'
compile ':spring-security-oauth-facebook:0.1'
在我的项目中。
在脚手架 SpringSecurityOAuthController 中有一个更新 OAuthToken 的方法:
protected OAuthToken updateOAuthToken( OAuthToken oAuthToken, UserAccount user ) {
//....
oAuthToken.principal = user
oAuthToken.authorities = user.authorities // Set<GrantedAuthorities>
oAuthToken.authenticated = true
oAuthToken
}
当我登录时,我没有看到权限设置:
grails.plugin.springsecurity.oauth.FacebookOAuthToken@a3795c4b: 校长: ;凭证:[受保护];已认证:真实;详细信息:空;未授予任何权限
虽然用户的角色是ROLE_USER, ROLE_ADMIN
我检查了类结构,发现:
class FacebookOAuthToken extends OAuthToken {..}
和
abstract class OAuthToken extends AbstractAuthenticationToken {
///....
Collection<GrantedAuthority> authorities
}
和
public abstract class AbstractAuthenticationToken implements Authentication, CredentialsContainer {
//...
private final Collection<GrantedAuthority> authorities;
}
因此,权限显然来自 AbstractAuthenticationToken.authorities 属性,而不是来自 OAuthToken.authorities。
有机会解决这个问题吗?
【问题讨论】:
标签: grails spring-security oauth-2.0 facebook-oauth