1

shiro セキュリティで保護された Java アプリケーションで 2 つのレルムを使用しています。1 つは私の OAuthToken をサポートしており、もう 1 つは UsernamePasswordToken をサポートしています。ユーザーが OAuthToken を使用して自分自身を認証すると、OAuthRealm の doGetAuthenticationInfo メソッドが呼び出されますが、PasswordRealmの doGetAuthorizationInfoが呼び出されます。なぜですか?

敬具クリス

4

1 に答える 1

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);
    }
}
于 2012-12-12T07:42:57.273 に答える