HTTP有个让人头疼的特性:每发一次请求,服务器就"失忆"一次。你刚登录完,刷新个页面,它又不认识你了。
传统做法是让服务器背"小抄"——建个session表,存你的登录状态。但用户一多,数据库查询就成了瓶颈。
![]()
JWT(JSON网络令牌)换了个思路:把身份信息直接写进令牌里,服务器只负责验签名,不用存任何东西。
打个比方:住酒店时,前台验证身份证后给你房卡。之后进房间只刷卡,门锁不打电话问前台。JWT就是你的房卡,门锁只认卡上的加密签名。
一个JWT长这样:三段字符串用点号拼接,分别是头部(声明算法)、载荷(用户数据)、签名(防篡改)。服务器用密钥验签后,直接读取载荷里的用户ID和权限,全程零数据库查询。
在Node.js里实现这套流程很直接:登录接口验证密码后签发令牌,中间件拦截后续请求验签,通过就把用户信息挂到请求对象上。没有session存储,集群部署时也不用操心状态同步。
这套机制特别适合微服务和无服务器架构——毕竟,让服务器"什么都不记",反而更容易扩展。
特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.