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去数据库中查找到对应的权限 , 然后将权限赋值给这个用户就可以实现权限的认证了
作者:coderymy
链接:https://juejin.cn/post/6992391181330186270
来源:掘金
- 量子计算机|我国已经实现“量子霸权”?比起超级计算机,速度快100万亿倍
- 36氪|36氪首发 | 「心愿盒Match Box」获百万级美元种子轮融资,用派样实现消费者体验共创
- 抗体|压倒性成效!中国新冠特效药实现零死亡,疫情或将进入倒计时?
- 相对论|NASA将发射飞行器“撞击小行星”,实现保卫地球
- 月球|在月球建核电站!美国宇航局放出豪言,10年内实现,还能动!
- spring|拼多多商家常遇到的7大骗局揭秘!别被忽悠了
- spring|元宇宙是个啥还没搞懂,这个App靠卖课先赚它一百万
- spring|哪几款值得下载的App?推荐给大家看看
- |新技术有望实现终极核聚变,开启一个清洁的无限能源时代
- 荣耀|这款手机在2500元价位实现爆款,靠的是哪几个环节做对了?