使用 JWT 生成 token 的优势有以下几点:
- 无状态性:使用 JWT 生成 token 将所有用户登陆信息全部存储在 token 中,不需要再额外存储在后端数据库等地方。这种方式使得服务端不需要存储状态,这对服务端来说是一种了不起的解放,使其变得更加的易于伸缩。
- 可扩展性:JWT 能够被很好的扩展,其标准格式提供带有 ‘claims’ 数据的签名,JTW 中也定义了常见的几个声明( payload )来属于 JWT 标准规范。
- 安全性:JWT 使用客户端生成的密钥(secret)对 token 进行签名,然后再被发送给服务器。服务器可以解密和验证 token 是否有效,如果 token 中有被篡改过的数据,那么就会被判断为无效 token。这个特性使得 JWT 可以轻松防止 CSRF 和 XSS 攻击。
- 可跨语言:基于标准化的 JSON 格式,可以方便地跨语言实现,很多编程语言的 JWT 库都支持相应的生成和验证逻辑。
- 可用于分布式系统:由于可以在没有网络存储器存储的情况下,通过 token 进行认证和授权逻辑,所以可以轻松地将其用于分布式系统和基于微服务的应用程。