一、多个realm的认证策略设置
1.1、多个realm实现原理
当应用程序配置多个Realm时,例如:用户名密码校验、手机号验证码校验等等。Shiro的ModularRealmAuthenticator会使用内部的AuthenticationStrategy组件判断认证是成功还是失败。
AuthenticationStrategy是一个无状态的组件,它在身份验证尝试中被询问4次(这4次交互所需的任何必要的状态将被作为方法参数):
- 在所有Realm被调用之前
- 在调用Realm的getAuthenticationInfo方法之前
- 在调用Realm的getAuthenticationInfo方法之后
- 在所有Realm被调用之后
认证策略的另外一项工作就是聚合所有Realm的结果信息封装至一个AuthenticationInfo实例中,并将此信息返回,以此作为Subject的身份信息。
Shiro中定义了3种认证策略的实现:
| AuthenticationStrategy.class | 描述 |
|---|---|
| AtLeastOneSuccessfulStrategy | 只要有一个(或更多)的Realm验证成功,那么认证将视为成功 |
| FirstSuccessfulStrategy | 第一个Realm验证成功,整体认证将视为成功,且后续Realm将被忽略 |

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

被折叠的 条评论
为什么被折叠?



