1

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

亲切的问候克里斯

4

1 回答 1

0

尝试在您的领域中覆盖方法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);
    }
}
于 2012-12-12T07:42:57.273 回答