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 的值,然后自动进行验证处理。


0
0

Brian

2025-06-29

小伙伴,哪里好难懂了?可以细说一下吗?

JWT 可以这样通俗地理解:它就像是一张“数字身份证”,上面写着你的身份信息(比如 userId、角色、过期时间等),由服务器盖上“防伪印章”(签名),保证别人不能篡改。结构非常简单:Header(声明署名算法).Payload(你是谁等信息).Signature(加密签名)。客户端登录后拿到这张“身份证”,每次请求都带着它,服务器只需验证签名就能确认身份,既安全又无需频繁查数据库,非常适合分布式系统

0
1
慕粉3946981
最近利用闲余时间把 redux 和 react-router-dom 这两个包及相关生态研究了一下,基本实现和原理算是理解了。比如 redux 实现、redux中间件实现、react-redux实现、RTK基本实现。react-router-dom 、react-router、history 基本实现。 下半年计划,研究下vue3.5及全家桶实现
2025-08-04
共1条回复

NestJS 入门到实战 前端必学服务端新趋势

近几年快速发展的Node.js框架,掌握未来前端工程师后端开发能力

582 学习 · 243 问题

查看课程