shiro与Spring Boot 整合
框架整合
创建模块
添加依赖
添加配置文件
添加配置文件 application.yml,添加基础配置
添加启动类
登录认证实现
访问数据库获取用户信息,实现登录认证
后端接口服务实现
(1)创建库表
(2)创建实体
(3)创建 mapper
(4)创建 service
创建接口
创建实现类
(5)自定义realm
(7)实现controller
(8)测试
* 确认数据库密码是加盐 3 次加密密码
*启动服务
*通过浏览器访问:http://localhost:8080/myController/userLogin?name=张三&pwd=z3
实现前端页面
Shiro整合Thymeleaf
添加 login 页面
添加 main 页面
添加 controller 方法,改造认证方法
修改配置文件
配置类
启动,访问测试
多个 realm 的认证策略设置
多个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 将被忽略
AllSuccessfulStrategy==》 所有 Realm 成功,认证才视为成功
ModularRealmAuthenticator 内置的认证策略默认实现是 AtLeastOneSuccessfulStrategy 方式。可以通过配置修改策略
多个realm代码实现
- 点赞
- 收藏
- 关注作者
评论(0)