Shiro Security,授权信息的多个领域?

时间:2012-12-03 15:21:32

标签: java security authentication authorization shiro

我在shiro安全保护的java应用程序中使用两个领域。一个支持我的OAuthToken,另一个支持UsernamePasswordToken。现在,当我的用户使用OAuthToken对自己进行身份验证时,会调用OAuthRealm的doGetAuthenticationInfo方法,但调用 PasswordRealm 的doGetAuthorizationInfo,有人可以告诉我,为什么?

亲切的问候 克里斯

1 个答案:

答案 0 :(得分:0)

尝试覆盖您的Realm中的方法isPermitted()。 Shiro使用此方法检查每个声明的领域是否允许当前领域授权用户。您可以以某种方式实现此方法:

/**
 * {@inheritDoc}
 */
@Override
public boolean isPermitted(PrincipalCollection principals, String permission) {
    if (principals.fromRealm("realm name").isEmpty()) {
        return false;
    }
    else {
        return super.isPermitted(principals, permission);
    }
}