【发布时间】:2012-07-24 18:00:27
【问题描述】:
我正在使用 Shiro 和 guice。 Shiro 有两个活跃的领域。
默认的 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 );
}
【问题讨论】: