我在受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/