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

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
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值