JSON Web Token(JWT)是一种用于在 web 上传递信息的标准,其以 JSON 格式表示信息,广泛应用于身份验证与授权。JWT 的结构包括三个部分:Header、Payload 和 Signature。Header 部分包含关于令牌的元数据,通常包含 alg(算法)和 typ(类型)字段。Payload 部分是实际携带用户数据和相关信息的 JSON 对象。Signature 用于验证令牌完整性和来源,生成方式为对 Header 和 Payload 进行加密或哈希处理。Header 和 Payload 之间用点号(.)分隔,Signature 位于末尾。完整的 JWT 令牌结构如下:使用 Header、Payload 和 Secret(密钥)生成 JWT,通过 HmacSHA256 算法对 Header 和 Payload 加密或哈希,生成的 Signature 用于保护 JWT 的完整性和验证发送者身份。在 Node.js 中使用 JWT 进行鉴权,首先需要配置环境。初始化 package.json 文件,并安装必要的 npm 包。使用 express 和 jsonwebtoken。创建基础服务器时,配置 express.json() 中间件解析 JSON 数据。登录后,使用 jwt.sign 函数生成 JWT 令牌,并设置过期时间。用户登录后,服务器响应包含生成的 JWT 令牌。使用 curl 请求登录路由,获取响应中的 JWT 令牌。为了验证用户是否已登录,创建 isLogin 中间件。该中间件从请求头中获取 Authorization 字段的 JWT 令牌值,使用 jwt.verify 函数验证令牌的有效性。验证通过后,继续执行后续路由处理,验证失败则返回 401 状态码。创建需要身份验证的路由,如 /user/:username,其中 :username 表示参数,用于获取特定用户信息。在该路由中添加 isLogin 中间件,确保用户已登录后,根据用户名查找用户信息并返回。使用 curl 请求该路由,获取用户信息。前端开发中,通常使用 axios 发起请求,携带 JWT 令牌。将令牌值放在 HTTP header 的 Authorization 字段。完整代码示例展示了从前端发起请求,携带 JWT 令牌获取用户信息的过程。总结,Node.js 中使用 JWT 进行鉴权实现过程包括环境配置、登录与 JWT 生成、中间件验证、路由处理,以及前端请求携带 JWT。此外,session 也是实现用户状态管理的另一种方法。