我正在使用
compile ':spring-security-core:2.0-RC2'
compile ':spring-security-oauth:2.0.2'
compile ':spring-security-oauth-facebook:0.1'
在我的项目中。
在scaffolded 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:校长:;证书:[保护];认证:真实;细节:null;没有授予任何权力
虽然用户的角色是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。
有机会解决这个问题吗?
答案 0 :(得分:0)
我应该使用<sec:ifAnyGranted>
代替<sec:ifAllGranted>
来检查当局......