005、实战:用主流语言玩转JWT生成与验证
上周排查线上问题,发现一个接口被刷了三千多次。日志里全是401,但对方Token看起来“长得挺正常”。抓包一看,原来攻击者直接复制了过期Token反复调用——我们的验证逻辑居然没检查有效期。这让我意识到,很多团队对JWT的实现停留在“能跑就行”,埋了不少雷。
今天咱们就实打实地用三种主流后端语言(Node.js/Python/Go)把JWT的生成和验证撸一遍,重点不是语法,而是那些容易栽跟头的地方。
一、先统一认知:JWT到底是个啥结构?
别看JWT神秘兮兮的,拆开就是三块Base64编码的字符串,用点号连接:
Header.Payload.SignatureHeader声明算法和类型,Payload放业务数据(别塞密码!),Signature确保Token没被篡改。记住这个结构,后面调试时直接解码就能看到内容,比猜来猜去强多了。
二、Node.js版:灵活但容易放飞自我
constjwt=require(