自学-自定义AuthenticationStrategy的验证策略-10

如果进项多个Realm的校验时,第一个Realm验证通过,第二个验证不通过,我们该怎么进行处理呢?这时候我们就应该使用Shiro的验证策略来解决这个问题了。

验证策略有三种:


llSuccessFulStrategy:所有Realm验证成功才算成功,且返回所有

Realm身份验证成功的认证信息,如果有一个失败就失败了。

AtLeastOneSuccessFulAtrategy:只要有一个Realm验证成功即可,和FirstSuccessfulStrategy 不同,将返回所有Realm身份验证成功的认证信息;

FirstSuccessFulStrategy:只要有一个 Realm 验证成功即可,只返回第一个 Realm 身份验证成功的认证信息,其他的忽略;

首先我们先对这三个验证策略进行一个校验,但是怎么去配置呢?

我们可以先有debug来进行设置下,然后再来配置。


Debug测试可以看出ModularRealmAuthenticator 默认是 AtLeastOneSuccessfulStrategy策略。

为了验证AtLeastOneSuccessFulAtrategy以上的结论,我们可以在Realm中的密码进行修改,看会不会返回验证信息。

控制台信息:


密码别修改,这时俩个信息都打印出来了,说明: 只要有一个Realm验证成功即可。

如果我们把默认的验证策略进行修改下呢?

配置:

<!--多个realm的配置-->
    <bean id="authenticator" class="org.apache.shiro.authc.pam.ModularRealmAuthenticator">
    	<property name="realms">
    		<list>
    			<ref bean="jdbcRealm"/>
    			<ref bean="jdbcRealm2"/>
    		</list>
    	</property>
    	<property name="authenticationStrategy">
    		<bean class="org.apache.shiro.authc.pam.AllSuccessfulStrategy">
    		</bean>
    	</property>
     </bean>

按照以上的结论,应该是会打印第一个正确的信息,第二个未被打印,而且登录失败且打印登录失败的信息,那我们就来测试下吧。


这时,也并未登录成功。说明验证符合结论的要求。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值