本文由 chatgpt 生成,可能存在错误。
JWT(JSON Web Token)详解
JWT(JSON Web Token)是一种用于在网络应用环境间安全地传递信息的开放标准(RFC 7519)。它通过数字签名的方式来确保信息的完整性和真实性。JWT 主要由三部分组成:
- Header(头部):通常包含令牌的类型(JWT)和所使用的签名算法(如 HMAC SHA256 或 RSA)。
- Payload(有效载荷):包含声明(claims),即需要传递的信息。有效载荷可以包含用户身份和一些元数据。
- Signature(签名):通过将编码后的头部、有效载荷和一个密钥(secret)组合成的结果,以确保信息未被篡改。
JWT 的结构如下:
1 | eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c |
JWT 的使用场景
- 身份验证:用户登录后,后端生成 JWT 并返回给客户端,客户端在后续请求中携带该令牌,后端可以通过验证 JWT 来确认用户身份。
- 信息交换:JWT 可以安全地传递信息,因其可以被签名(例如,使用公钥/私钥对)。
PHP 后端示例
下面是一个使用 PHP 创建和验证 JWT 的示例。
Composer 安装依赖
首先,安装 firebase/php-jwt 库:
1 | composer require firebase/php-jwt |
JWT 生成与验证示例
1 |
|
Node.js 后端示例
在 Node.js 中,我们可以使用 jsonwebtoken 库来处理 JWT。
安装依赖
1 | npm install jsonwebtoken |
JWT 生成与验证示例
1 | const jwt = require("jsonwebtoken"); |