spring|SpringBoot+Shiro+Jwt实现登录认证( 二 )
pom.xml
application.properties
创建ShiroConfig.java进行一些简单的配置
创建自定义的Realm
2.2 不使用starter
编写 Shiro 的配置类:ShiroConfig
将 Shiro 的配置信息(spring-shiro.xml 和 spring-web.xml)以 Java 代码配置的形式改写:
编写 Controller
与 Shiro 和 SSM 的整合一样 。 略
编写 Thymeleaf 页面
略
3. SpringBoot整合Jwt3.1 依赖
3.2 代码
1、创建JwtUtil
解析:
1.在创建JwtUtil对象的时候需要传入几个数值
1.这个用户 , 用来生成秘钥
2.这个加密算法 , 用来加密生成jwt
2.通过jwt数据获取用户信息的方法(decode())
3.判断jwt是否存在或者过期的方法
4.最后是测试方法
2、创建一个Controller
1.登录的Controller
1.获取username和password , 进行与数据库的校验 , 校验成功执行下一步 , 失败直接返回
2.使用创建JwtUtil对象 , 传入username和需要使用的加密算法
3.创建需要加在载荷中的一些基本信息的一个map对象
4.创建jwt数据 , 传入username , 保存时间 , 以及基本信息的map对象
2.校验Controller
1.获取前台传入的Jwt数据
2.使用JWTUtil中的isVerify进行该jwt数据有效的校验
4. SpringBoot+Shiro+Jwt1.由于需要对shiro的SecurityManager进行设置 , 所以不能使用shiro-spring-boot-starter进行与springboot的整合 , 只能使用spring-shiro
2.由于需要实现无状态的web , 所以使用不到Shiro的Session功能 , 严谨点就是将其关闭
这样如果调用getSession()方法会抛出异常
4.1 流程
- 用户请求 , 不携带token , 就在JwtFilter处抛出异常/返回没有登录 , 让它去登陆
- 用户请求 , 携带token , 就到JwtFilter中获取jwt , 封装成JwtToken对象 。 然后使用JwtRealm进行认证
- 在JwtRealm中进行认证判断这个token是否有效 , 也就是
4.2 快速开始
0. JwtDeafultSubjectFactory
1. 创建JwtUtil
这个一般是固定的写法 , 其中写了大量注释
2. 创建JwtFilter
也就是在Shiro的拦截器中多加一个 , 等下需要在配置文件中注册这个过滤器
3. 创建JwtToken
其中封装了需要传递的jwt字符串
4. JwtRealm创建判断jwt是否有效的认证方式的Realm
5. ShiroConfig配置一些信息
- 因为不适用Session , 所以为了防止会调用getSession()方法而产生错误 , 所以默认调用自定义的Subject方法
- 一些修改 , 关闭SHiroDao等
- 注册JwtFilter
6. 测试
4.3 授权方面的信息
在JwtRealm中的授权部分 , 可以使用JwtUtil.decode(jwt).get(\"username\")获取到username , 使用username去数据库中查找到对应的权限 , 然后将权限赋值给这个用户就可以实现权限的认证了
- 云曦灵|对象终于能包分配了?百度希望未来两年实现“数字人自由”
- 游戏本|华为:我已实现国产,就等你兑现承诺!
- 36氪|启中教育:如何实现店铺爆发式增长
- 抖音|抖音物流加速!终于实现送货上门!
- 腾讯云|实现TO B销售规模化持续增长三步法 | 腾讯云原生加速器
- 芯片|高通再见,iPhone将全部采用自研发芯片:2023年首次实现
- Java|重磅丨屯粮积草网与腾讯达成2022年度战略合作,实现主流搜索引擎全覆盖!
- 广州联通|上传速率、覆盖能力大增!联通携手华为5G超级上行实现“跨站”规模首商用
- 小程序上线5年,张小龙实现设想了吗?
- 网络|河南实现乡镇以上和农村热点区域5G网络全覆盖