JWT 简单介绍
全称 Json Web Token 致力于网络安全的一套Json开放标准
主要流程
将用户部分信息进行加密,生成一套令牌,存放于客户端
客户端发起请求时,带入此令牌,交由服务端识别令牌真伪
服务端校验完成,开放部分权限,允许接口请求数据
优点:
无需存放于服务端,极大减轻服务端压力
服务端安全性,较有提升(本来就是干这个的)
不限定语言,依赖于Json的流通性
内容介绍
header 声明加密签名的算法与类型
playload 主要用来存放用户信息,以及自定义规则
signature 存放secret(私钥),对header,playload再次加密
详细使用
1. 引入依赖
使用maven
服务端生成token令牌 扔给客户端
1. 编写静态方法 生成token Users是用户信息
设定载荷中的规则 这里我们设定一个小时后失效
将用户的Id存入载荷 用户密码作为私钥
服务端生成token
2. 将token实现机制写入用户登录接口
实现类逻辑
Web逻辑
3. 我这里就直接使用swagger 进行测试了
swagger页面挺漂亮
成功后的返回
token 中返回的字符串 就是我们的令牌了
我们直接将它放入了request的header中
开始做拦截操作
依赖于拦截器进行操作可以考虑 HandlerInterceptor,或者 aspect
1. 实现拦截器HandlerInterceptor
使用拦截器HandlerInterceptor
2. 对token进行拦截与验证
拿到客户端扔给的token 依据JWT自带的解析 解密用户信息
自定义规则验证
3. JWT 验证
依据载荷中的规则处理token 我们设定了时间
依据载荷中的规则
5. 配置过滤规则 这里对所有请求都进行拦截(放行登录) ,实际操作中要对部分访问放行
将拦截器注入到Spring容器
4. 编写其他接口
依据用户主键获取用户信息
5. 依旧利用swagger测试
测试接口
返回信息
返回信息
拦截器拦截成功
因为没有将令牌放入 所以请求是非法的
6. 我们先把刚才生成的token放入swagger给的头信息配置中
swagger高版本自带的
放入令牌后
放入令牌后,请求就成功了
载荷可以定义的规则很多 大家自己去搜刮
如果喜欢用aspect进行拦截 也很简单 这里就不再多说
JWT的源码 可以大体看看 加深下理解
结束