jwt 全称为 JSON Web Tokens。是一种成熟的 token 字符串生成方案。
    token 是包含用户信息的一个字符串,那这种字符串应该是什么格式呢?
    比如有以下信息:

    1. {
    2. "user": "jack",
    3. "role": "admin",
    4. "expires": "2025-10-10"
    5. }
    1. 直接拼接,user=”jack”&role=”admin”&expires=”2025-10-10”。😐
    2. 使用 base64 进行编码 ‘eyJ1c2VyIjoiamFjayIsInJvbGUiOiJhZG1pbiIsImV4cGlyZXMiOiIyMDI1LTEwLTEwIn0=’。这种方式虽然可以防止用户看到信息,但是不能防篡改。用户如果改了 role 角色再重新 base64 编码,就会有问题。
    3. 防篡改的方式是给 token 加签名。签名就是指一个生成者指定的一个字符串,和 用户信息 放在一起编码和加密,这样用户拿不到签名就无法生成 token。

    jwt 就是第三种方式,并且 jwt 做了相关的规范规定,生成 token 的格式是 header➕payload➕signature。
    jwt 的 rfc 标准RFC 7519 - JSON Web Token (JWT) (ietf.org)