テスト用にApacheShiroの単純な承認レルムを作成しようとしています。
パブリッククラスMyAuthRealmはAuthorizingRealmを拡張します{ @オーバーライド 保護されたAuthorizationInfodoGetAuthorizationInfo(PrincipalCollectionプリンシパル){ SimpleAuthorizationInfo sai = new SimpleAuthorizationInfo(); sai.addRole( "kota"); sai.addStringPermission( "koko:*:view"); サイを返す; } @オーバーライド 保護されたAuthenticationInfodoGetAuthenticationInfo(AuthenticationTokenトークン)はAuthenticationException{をスローします nullを返します。 } }
ご覧のとおり、ユーザーが誰であるかは関係ありません。ロールと特定の権限を返すだけです。
今、私は次のスニペットでそれをテストしようとしています:
if(SecurityUtils.getSubject()。hasRole( "kota")){ out.write( "kota"); } if(SecurityUtils.getSubject()。hasRole( "kota2")){ out.write( "kota2"); } if(SecurityUtils.getSubject()。isPermitted( "koko:toto:view")){ out.write( "koko"); } if(SecurityUtils.getSubject()。isPermitted( "koko2:toto:view")){ out.write( "koko2"); }
そして、私は次の出力を受け取ります
コタココココ2
:(
したがって、役割は正しく構成されているように見えますが(ユーザーにはkotaの役割しかないため)、権限はありません(koko2が印刷されるのはなぜですか?)!!!!
誰かが私が間違っていることを私に説明できますか?
TIA!