【问题标题】:Shiro Security, multiple realms which authorization info is taken?Shiro Security,多个领域,哪些授权信息被占用?
【发布时间】:2012-12-12 16:57:41
【问题描述】:
我在我的 shiro 安全保护 java 应用程序中使用了两个领域。一个支持我的 OAuthToken,另一个支持 UsernamePasswordToken。现在,当我的用户使用 OAuthToken 进行身份验证时,我的 OAuthRealm 的 doGetAuthenticationInfo 方法被调用,但我的 PasswordRealm 的 doGetAuthorizationInfo 被调用,谁能告诉我,为什么?
亲切的问候
克里斯
【问题讨论】:
标签:
java
security
authentication
authorization
shiro
【解决方案1】:
尝试在您的领域中覆盖方法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);
}
}