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去数据库中查找到对应的权限 , 然后将权限赋值给这个用户就可以实现权限的认证了
- 和真的几乎一样,这个仿生蜻蜓,要实现《沙丘》里的扑翼机了
- |iPhone14ProMax曝光:全面屏实现突破,硬件性能一骑绝尘
- 如何实现一根网线连接路由器,既能上网又可以使用itv呢?
- 20年磨一剑 实现国产膜电极的规模应用 武汉理工大学潘牧团队获湖北省技术发明奖一等奖
- 衰老|衰老“可忽略不计”?它们实现了
- 韩国论文怎么去实现论文查重这一操作过程?
- 全球首次!我国实现“克隆猪”自动化,将用来育种生产
- spring|纯白ITX来了,还支持GEAR 1高频内存!新款七彩虹B660迷你主板测试
- 互联网+制造业,可实现精细管理、精益生产、敏捷制造、制造业产业的优化升级
- spring|iPhone14系列再次被确认:配色、屏幕、电池容量、价格基本清晰了
