Skip to content

如何实现无状态的JWT令牌自动续约 ​

来源:语雀原文 | 整理日期:2026-09-22

概念 ​

JSON Web Token (JWT)是一个开放标准(RFC 7519) ,它定义了一种简洁的、自包含的方法用于通信双方之间以 JSON 对象的形式安全地传输信息。这种信息可以被验证和信任,因为它是数字签名的。JWT通常用于互联网应用程序中,用于身份验证和授权。 JWT 和 传统 Token 的区别

JWT传统 Token
存储位置JWT通常存储在客户端传统的Token如Cookies和Session Tokens通常在服务器端存储状态
传输方式JWT作为HTTP请求的一部分传输,可以直接在请求的Header中传统Token通常通过Cookie在浏览器和服务器之间传输
状态管理JWT是自包含的,不依赖于服务器的会话状态,减轻服务器负担。传统Token通常与服务器的会话状态绑定,服务器需要存储用户的会话信息,这可能导致更高的服务器负载和状态管理复杂性。
安全性和隐私JWT的所有信息都是加密的,并且可以设置权限,只有拥有正确密钥的用户才能解码信息。但是,如果密钥被泄露,那么所有的JWT都可能受到影响。不包含敏感信息,因此不加密
跨域使用由于 JWT 不依靠服务器状态,可以在不同域之间请求和传递用户信息,因此适合跨域请求传统Token在跨域请求中可能需要服务器配置CORS(跨源资源共享)策略

JWT 组成部分 ​

image.png


由于JWT是自包含的,所以它不需要在服务器上存储状态,这减少了攻击面,并允许用户在没有状态的系统中进行认证。同时,由于JWT是在客户端和服务器之间传输的,所以它也易于跨域使用。 以下是一段 JWT的内容,我们需要找到令牌中的用户名

官网地址:https://jwt.io

JWT 原理 ​

JWT 的原理是,服务器认证以后,生成一个 JSON 对象,发回给用户,就像下面这样。

{

"姓名": "诸葛",

"角色": "管理员",

"到期时间": "2028年12月11日0点0分"

}

以后,用户与服务端通信的时候,都要发回这个 JSON 对象。服务器完全只靠这个对象认定用户身份。为了防止用户篡改数据,服务器在生成这个对象的时候,会加上签名(详见后文)。

服务器就不保存任何 session 数据了,也就是说,服务器变成无状态了,从而比较容易实现扩展。

image.png

认证流程流程说明:

浏览器发起请求登陆,用户携带用户名和密码等了

服务端验证身份,根据算法,将用户标识符打包生成 Token,

服务器返回JWT信息给浏览器,JWT不包含敏感信息

浏览器发起请求获取用户资料,把刚刚拿到的 Token一起发送给服务器

服务器发现数据中有 Token,验证身份是否合法

服务器根据当前Token解析返回该用户的用户资料

整体过程如下: ​

image.png

image.png

image.png

image.png

image.png

image.png

image.png

image.png

image.png

image.png

image.png

image.png