Ruoyi框架学习--JWT(JSON Web Token)

发布于:2022-12-27 ⋅ 阅读:(681) ⋅ 点赞:(0)

什么是JWT?

还是看别人大佬写的博客把,我自己写的真是一坨~

JWT详解_baobao555#的博客-CSDN博客_jwt通俗地说,JWT的本质就是一个字符串,它是将用户信息保存到一个Json字符串中,然后进行编码后得到一个JWT token并且这个JWT token带有签名信息,接收后可以校验是否被篡改,所以可以用于在各方之间安全地将信息作为Json对象传输。JWT详解_baobao555#的博客-CSDN博客_jwt

jwt具体实现:

jwt其实就是对前端传过来的一些数据进行加头然后处理加密封装的一个过程,主要操作集中在:ruoyi.framework.web.service.TokenService.java文件里。

注:@component注解的使用:@component的作用详细介绍_weixin_38168484的博客-CSDN博客

整体逻辑如下:

核心是获取用户信息方法(getLoginUser())。

1、是获取请求携带的令牌,然后这个获取请求携带的令牌(getToken())中也就是获得前端传过来的一个叫Authorization 的东西,把其中的前缀 :Bearer给替代成空字符 进而获得JWT用的。

2、当上面那个令牌不是空的时候,就用得到的令牌来获取数据声明(parseToken()),主要用的就是jjwt包里封装的方法。

3、获得uuid(什么是uuid:小科普:通用唯一标识码UUID的介绍及使用 - 知乎

4、根据uuid获得Tokenkey(也就是redis中的登录用户redis key + uuid 组成的字符串)

5、再根据上面获得的Tokenkey走redis的方法(getCacheObject)来获得缓存的基本对象

6、从得到的缓存的基本对象得到登录用户身份权限,最终实现前后端的串联。

JWT过滤器:

主要集中在:ruoyi.framework.security.filter.JwtAuthenticationTokenFilter.java中

先是使用tokenService.verifyToken()方法来验证通过用户信息获取到的token的令牌有效期是否合适

然后就通过spring security 中的 dofilter()方法来验证token的有效性


网站公告

今日签到

点亮在社区的每一天
去签到