express开发服务端-----加解密token

it2023-06-05  81

express开发服务端-----加解密token

参考: jsonwebtoken.

JWT 的原理

JWT 的原理是,服务器认证以后,生成一个 JSON 对象,发回给用户,就像下面这样。

{ “姓名”: “张三”, “角色”: “管理员”, “到期时间”: “2018年7月1日0点0分” } 以后,用户与服务端通信的时候,都要发回这个 JSON 对象。服务器完全只靠这个对象认定用户身份。为了防止用户篡改数据,服务器在生成这个对象的时候,会加上签名。

服务器就不保存任何 session 数据了,也就是说,服务器变成无状态了,从而比较容易实现扩展。

加密

// 加密 const jwt = require('jsonwebtoken'); const token = jwt.sign({ id: data._id }, process.env.SECRET_KEY,{ expiresIn: 60*60, //过期时间,一个小时 });

解密

// 解密 const jwt = require('jsonwebtoken'); jwt.verify(token, process.env.SECRET_KEY, (error, authData) => { assert(!error, 403, "token已过期"); const { id } = authData; assert(id, 401, "请先登录"); require("../models/user").findById(id, (error, data) => { req.user = data; assert(req.user, 401, "请先登录"); next(); }); });

process.env.SECRET_KEY 需要配置全局环境变量

最新回复(0)