JWT好难懂
来源:11-12 JWT实操:sign与解析jwt

weixin_慕仔5140749
2025-06-29
JWT好难
写回答
2回答
-
慕粉3946981
2025-08-04
这个地方课程并没有讲好。
简单说生成一个 jwt token 需要使用三方包,比如 jsonwebtoken 包 ( 验证 jwt 也是使用这个包 )
const jwt = require('jsonwebtoken'); // 引入生成 jwt token 的包 const secretKey = 'your-secret-key'; // 密钥(必须保密) 用于加密解密 // 载荷(Payload):用户信息或其他数据 const payload = { userId: 123, username: 'alice', role: 'admin' }; const token = jwt.sign(payload, secretKey, { expiresIn: '1h', // 有效期1小时 也可以设置其他值如 '2d', '10h', '120ms') }); // 最后将后端生成的 jwt token 响应给前端 // 前端后续的请求一般都会在请求头的 Authorization 中携带 `Bearer token的值` // 后端后续接收到前端的请求,会验证请求头中的 Authorization 字段,如果验证失败则不会响应正确的数据
上面是最基础的,但为什么在 nestjs 官方的文档中又单独设置了一个 passport 这个章节?并且在这个章节中为了集成 jwt 还讲解说明了 @nestjs/jwt @nestjs/passport passport-jwt passport 等一大堆包来实现这个功能?这不是多此一举吗?
本质其实就是一个封装,身份认证有很多种,比如 jwt token ,比如google 、github登录等。将众多身份认证封装成一个个策略类,需要使用什么样的身份认证功能就使用什么样的策略类。jwt token 策略类里面有哪些额外的功能?比如可以指定从前端的请求头中获取 Authorization 字段中 jwt token 的值,然后自动进行验证处理。
00 -
Brian
2025-06-29
小伙伴,哪里好难懂了?可以细说一下吗?
JWT 可以这样通俗地理解:它就像是一张“数字身份证”,上面写着你的身份信息(比如 userId、角色、过期时间等),由服务器盖上“防伪印章”(签名),保证别人不能篡改。结构非常简单:Header(声明署名算法).Payload(你是谁等信息).Signature(加密签名)。客户端登录后拿到这张“身份证”,每次请求都带着它,服务器只需验证签名就能确认身份,既安全又无需频繁查数据库,非常适合分布式系统
012025-08-04
相似问题