为什么使用jwt呢,因为可以通过URL,POST参数或者在HTTP header发送,因为数据量小,传输速度也很快。本篇通过具体代码来进行详情解析,对大家的学习或工作具有一定的参考借鉴价值
springboot + shiro + jwt (详情解析+代码实现)加密接口 设置权限
首先需要把shiro的几个配置类给下载好(我已经把需要的配置类给放到了github和网盘之中)
先讲完各个配置类的作用,后面讲具体流程
ShiroConfig.java 类主要是设置了过滤器 和shiro自己的session,假如这个类没有放行就只有token才能访问后端接口
UserRealm.java 类主要是检测用户权限和授予权限,对用户名的验证
JWTFilter.java 类主要是防止别人访问你的接口,假如有人想直接访问你的接口首先检查你的token有没有在到ShiroConfig中看有没有放行假如两项都没有就无权访问后端的接口
mdsUtils.java 加密前端传入的密码,以及设置加密方式
JWTUtils.java 生成token,和设置过期时间
好了,这就是token几个主要的配置类
下面是实现的整个流程
1.首先前端登录访问后端登录接口,要给登录的请求地址放行(在没有登录的情况下是没有token的,如果没有放行就访问不到接口
这是给需要访问的路径放行
2.放行之后进入controller 传入用户名和密码到service中的login(注:(login())方法在没有在网盘中需要自己写)方法中 然后拿传入的账号(注:只有账号)在数据库中进行查询假如有此账号需要在数据库中获取用户的(盐:此盐非彼盐,这相当于对数据加密的密钥) 以及用户的信息,如果没有这个用户则直接抛出错误
3.拿到用户的信息后,把密码拿出来用用户信息里面的盐进行加密,然后将连个密码进行比对,比对成功就生成一个token携带这个用户信息返回出去到前端
4.前端拿到token后登录成功跳转页面并将token储存到本地并将token放到请求头中,前端登录成功后需要到后端获取数据每一次都需要携带这个token要不然就会被过滤器给拦掉
在axios中传入token
请求头中有了token就不需要配置过滤器可直接在realm类中进行授权并对数据的查询
最后 别忘记导入依赖
博主白天工作没有时间回复,晚上可做出回答
三天一期java技术
可帮忙找bug
可评论需要的技术可能下期会进行讲解
这是配置文件的位置
链接:https://pan.baidu.com/s/1k6MhGTOfskjRcQH_XppRcA
提取码:gdb2
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。