前端/移动开发面试题更新 2026-08-05

请说明在 Node.js 环境下,基于 JWT 实现用户认证的完整流程,包括令牌的生成、校验与存储策略。

前端/移动开发风险判断技术原理JWTNode.js

考察说明

考查对 JWT 认证机制的理解及在 Node.js 中的落地实践。

回答思路

  1. 【回答框架 1】JWT 是一种开放标准(RFC 7519),用于在各方之间以 JSON 对象形式安全传输声明信息。它由三部分组成:Header(头部)、Payload(负载)和 Signature(签名),每部分经过 Base64Url 编码后以点分隔。签名用于验证令牌的完整性和来源,防止数据被篡改。
  2. 【回答框架 2】在 Node.js 中,通常使用 jsonwebtoken 库或 passport-jwt 策略。用户登录成功后,服务端生成 JWT,并在响应中返回给客户端。生成时需设置过期时间(exp)、签发者(iss)、受众(aud)等声明。客户端收到令牌后,在后续请求的 Authorization 请求头中以 Bearer Token 形式携带。
  3. 【回答框架 3】服务端在受保护的路由中需要校验 JWT。校验过程包括验证签名(使用相同的密钥或公钥)、检查过期时间等标准声明,以及可选的针对应用的自定义校验。校验通过后,可以从令牌中提取用户 ID 等负载信息,并挂载到请求对象上(如 req.user),供后续业务逻辑使用。
  4. 【回答框架 4】关于存储与传输的安全,常见实践有:将 JWT 放在 HTTP-only Cookie 中可降低 XSS 风险,但需防范 CSRF;若放在 localStorage 则便于跨域使用,但对 XSS 更敏感。另外,由于 JWT 本身可被解码,敏感信息不应放入 Payload。令牌撤销与续期通常借助黑名单或短期令牌加刷新令牌机制实现。
  5. 【关键点 1】JWT 由 Header、Payload、Signature 三部分组成,签名基于密钥生成。
  6. 【关键点 2】Node.js 中常用 jsonwebtoken 生成和校验令牌,passport-jwt 用于中间件集成。
  7. 【关键点 3】客户端每次请求需在 Authorization 头中携带 Bearer Token,服务端对受保护路由进行校验。
  8. 【关键点 4】JWT 中的 Payload 是 Base64Uurl 编码,可被解码,不应存放敏感信息。
  9. 【关键点 5】令牌的存储需权衡 XSS 和 CSRF 风险,推荐使用 HTTP-only Cookie 并配置适当的跨域策略。
  10. 【易错点 1】不要把 JWT 直接存储在 localStorage 中而不考虑 XSS 防护。
  11. 【易错点 2】校验 JWT 时须验证签名和过期时间,不能仅凭解码结果信任内容。
  12. 【易错点 3】JWT 天然不支持服务端淘汰,需要额外机制处理注销失效问题。