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

亲切的问候
克里斯

最佳答案

尝试在您的领域中覆盖方法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);
    }
}

关于java - Shiro Security,需要获取多个授权信息的多个领域?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13686246/

10-13 00:02