JWT结构

JWT通常用于在网络应用环境间安全地传输信息。一个JWT由三部分组成,它们通过点(.)分隔:头部(Header)、有效载荷(Payload)、签名(Signature)。

头部(Header):
    通常包含两部分:令牌的类型(JWT)和使用的签名算法(比如HS256,表示HMAC SHA256)。
有效载荷(Payload):
    包含了一些声明(claims)。声明是关于实体(通常是用户)和其他数据的声明。有三种类型的声明:注册声明(registered claims)、公共声明(public claims)、私有声明(private claims)。
签名(Signature):
    要创建签名部分,你需要先编码头部和有效载荷(使用Base64 URL编码),然后用你的密钥对它们签名。

下面是简单的解析代码,从JWT代码中获取用户名:

1
2
3
4
5
6
7
8
9
function getUserNameFromToken(token) {
const arr = token.split('.')
// 使用 Buffer 解码
const decodedBuffer = Buffer.from(arr[1], 'base64');
// 将 Buffer 转换为字符串(如果原始数据是字符串)
const decodedString = decodedBuffer.toString('utf8');
const json = JSON.parse(decodedString)
return json.userName
}