node后端使用jwt实现跨域认证--生成token、验证token是否无效和过期

一笑奈何 提交于 2019-12-07 20:05:44

JSON Web Token(缩写 JWT)是目前最流行的跨域认证解决方案

引入jwt

var jwt = require('jsonwebtoken');

生成token

在登录时,如果用户名和密码正确,则使用jwt生成token,返回给前端

let { username, password } = req.body;
.
.
.
//jwt生成加密token,username是公文,密钥是“secret”,1小时后过期
token = jwt.sign({ username }, "secret", { expiresIn: 60 * 60 * 1 });
.
.
.
res.json({
  code: 0, msg: '登录成功', token: token, userName: username
});

解析token

在所有需要登录验证的请求中,获取请求头中的token,使用jwt解析此token

let token = req.headers.authorization;
if (token) {
jwt.verify(token, 'secret', (err, decoded) => {
  if (err) {
    switch (err.name) {
      case 'JsonWebTokenError':
        res.status(403).send({ code: -1, msg: '无效的token' });
        break;
      case 'TokenExpiredError':
        res.status(403).send({ code: -1, msg: 'token过期' });
        break;
    }
  }
})
}
标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!