2012-12-03 76 views
1

我在我的shiro安全保護的java應用程序中使用了兩個領域。一個是支持我的OAuthToken,另一個支持UsernamePasswordToken。現在,當我的用戶使用OAuthToken進行身份驗證時,我的OAuthRealm的doGetAuthenticationInfo方法被調用,但調用了我的doGetAuthorizationInfo,任何人都可以告訴我,爲什麼?四郎安全,授權信息被採取的多個領域?

親切的問候 克里斯

回答

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); 
    } 
}