Shiro 多Realm验证和认证策略(七)

查看源代码ModularRealmAuthenticator类


再添加一个SecondShiroRealm类


	//修改,用用户名作为盐值哦!
		Object credentials = null;
		if("mike".equals(username)){
			credentials="d0cd0a759e892d34f8b7beee186c3516a6e49651";  
		}else if("admin".equals(username)){
			credentials="cb93abd4d63540dd38e1e9d59a57e845376166aa"; 
		}
		/
		

		// c)realmName:当前realm对象的name,调用父类的getName()方法;
		String realmName = getName();
		

		// 认证对象
		//SimpleAuthenticationInfo info = new SimpleAuthenticationInfo(principal, credentials, realmName);
		
		//d)盐值
		ByteSource credentialsSalt=ByteSource.Util.bytes(username);

		// 认证对象
		SimpleAuthenticationInfo info =new SimpleAuthenticationInfo(principal, credentials, credentialsSalt, realmName);
               return info;

 (一)application.xml配置文件




运行断点调试





再修改SecondShiroRealm类中的密码不正确,用户名用SecondRealmName


运行调试查看


查看到有两个策略


可以登录成功!


(二)application.xml文件配置 AllSuccessfulStrategy策略


查看如下所示


SecondShiroRealm是登录失败!



(三)application.xml文件配置 FirstSuccessfulStrategy策略


调试查看


运行


总结: 

AuthenticationStrategy 接口的默认实现:

1) FirstSuccessfulStrategy:只要有一个 Realm 验证成功即可,只返回第一个 Realm 身份验证成功的认证信息,其他的忽略;
2) AtLeastOneSuccessfulStrategy:只要有一个Realm验证成功即可,和FirstSuccessfulStrategy 不同,将返回所有Realm身份验证成功的认证信息;
3) AllSuccessfulStrategy:所有Realm验证成功才算成功,且返回所有Realm身份验证成功的认证信息,如果有一个失败就失败了。
注意:ModularRealmAuthenticator 默认是 AtLeastOneSuccessfulStrategy策略


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值