多个realm代码实现

本文详细介绍了在Shiro中配置多个Realm的认证策略,重点解析了多个Realm的实现原理,包括AuthenticationStrategy在身份验证过程中的4次交互,并讨论了其如何聚合Realm结果。同时,文章还探讨了Shiro的三种认证策略实现,特别是默认的AtLeastOneSuccessfulStrategy,并提供了代码实现示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、多个realm的认证策略设置

1.1、多个realm实现原理

当应用程序配置多个Realm时,例如:用户名密码校验、手机号验证码校验等等。Shiro的ModularRealmAuthenticator会使用内部的AuthenticationStrategy组件判断认证是成功还是失败。

AuthenticationStrategy是一个无状态的组件,它在身份验证尝试中被询问4次(这4次交互所需的任何必要的状态将被作为方法参数):

  1. 在所有Realm被调用之前
  2. 在调用Realm的getAuthenticationInfo方法之前
  3. 在调用Realm的getAuthenticationInfo方法之后
  4. 在所有Realm被调用之后

认证策略的另外一项工作就是聚合所有Realm的结果信息封装至一个AuthenticationInfo实例中,并将此信息返回,以此作为Subject的身份信息。

Shiro中定义了3种认证策略的实现:

AuthenticationStrategy.class 描述
AtLeastOneSuccessfulStrategy 只要有一个(或更多)的Realm验证成功,那么认证将视为成功
FirstSuccessfulStrategy 第一个Realm验证成功,整体认证将视为成功,且后续Realm将被忽略
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值