1

シロとガイスを使っています。Shiro には 2 つのアクティブな領域があります。

デフォルトの shiro AuthenticationStrategy は「AtLeastOneSuccessfulStrategy」です。この戦略の基本的な考え方は問題ありませんが、問題は、大量の例外を無視することです。これは、Realm1 が IncorrectCredentialsException をスローした場合、AuthenticationException によってラップされ、どのレルムもトークンをサポートしていないというメッセージが表示されるため、それを知る方法がないことを意味します。

戦略を FirstSuccessfulStrategy に置き換えるにはどうすればよいですか?

現在、これは私が ShiroWebModule に持っているものです:

   @Override
    protected void configureShiroWeb() {
       Multibinder<Realm> multibinder = Multibinder.newSetBinder(binder(), Realm.class);
        multibinder.addBinding().to(RealmA.class);
        multibinder.addBinding().to(RealmB.class);
        bind( HashedCredentialsMatcher.class );
        bind( CredentialsMatcher.class ).to( HashedCredentialsMatcher.class );
        bindConstant().annotatedWith( Names.named( "shiro.hashAlgorithmName" ) ).to( Md5Hash.ALGORITHM_NAME );
        addFilterChain( "/login.jsp", AUTHC_REST );
    }

    @Override
    protected void bindSessionManager( AnnotatedBindingBuilder<SessionManager> bind ) {
        bind.to( ServletContainerSessionManager.class );
    }
4

1 に答える 1

2

追加で解決

   bind(Authenticator.class).toInstance(new ModularRealmAuthenticator());
   bind(AuthenticationStrategy.class).to(FirstSuccessfulStrategy.class);

configureShiroWeb() メソッドに。

于 2012-07-26T13:42:33.970 に答える