【若依】开源框架学习笔记 08 - Token 验证 (JWT)

一、概述

在上一篇文章登录认证流程当中,登录认证通过后,最后一步是生成 token 返回给前端,因此这篇文章主要是对于 token 生成的一些整理。

二、Token 生成流程

请求头 token 信息:
在这里插入图片描述
创建 token:
在这里插入图片描述

  1. token 是用 Hutool 生成的 UUID 字符串,保存到 LoginUser 对象中。LoginUser 实现了 Spring Security 中的 UserDetails 接口,用于保存登录用户信息。

  2. 设置用户代理信息 setUserAgent
    在这里插入图片描述

  3. 设置令牌有效期 refreshToken
    在这里插入图片描述
    该方法设置用户的登录时间、token 过期时间,以及将登录用户信息缓存到 Redis 中。

  4. 生成 JWT 令牌 createToken
    在这里插入图片描述
    claims 保存了 token 信息,签名算法是 HS512,秘钥是在配置文件中配置的:
    在这里插入图片描述
    :JWT属于对称加密,因此不能泄露秘钥信息,否则任何人都可以通过秘钥生成 token 并通过校验。

三、Token 验证流程

若依框架中使用了 Spring Security + JWT 进行权限验证,在 Spring Security 配置 SecurityConfig 中也加入了 JWT 过滤器JwtAuthenticationTokenFilter
在这里插入图片描述
在方法 configure(HttpSecurity) 中:
在这里插入图片描述
在项目启动过程中也能看到启动信息:
在这里插入图片描述
查看 token 过滤器 JwtAuthenticationTokenFilter
在这里插入图片描述

  1. 获取用户信息 getLoginUser
    在这里插入图片描述
    1.1. 获取请求token getToken
    在这里插入图片描述
    1.2. JWT 解析 token parseToken
    在这里插入图片描述
    1.3. 根据返回的信息到缓存中获取用户信息并返回:
    LoginUser user = redisCache.getCacheObject(userKey);

  2. 验证 token 有效期 verifyToken
    在这里插入图片描述
    验证通过会刷新令牌有效期,否则会在过滤器抛出异常 token 失效,需要重新登录。

  • 13
    点赞
  • 45
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

MichelleChung

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值