我在shiro安全保护的java应用程序中使用两个领域。一个支持我的OAuthToken,另一个支持UsernamePasswordToken。现在,当我的用户使用OAuthToken对自己进行身份验证时,会调用OAuthRealm的doGetAuthenticationInfo方法,但调用 PasswordRealm 的doGetAuthorizationInfo,有人可以告诉我,为什么?
亲切的问候 克里斯
答案 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);
}
}