码迷,mamicode.com
首页 > Web开发 > 详细

jsonwebtoken和express-jwt的使用

时间:2019-11-12 12:37:25      阅读:128      评论:0      收藏:0      [点我收藏+]

标签:前端   status   save   error   handler   header   code   用户权限   ons   

jsonwebtoken和express-jwt——nodeJs下用户权限验证,token的生成与验证工具,踩坑记录~~~

使用步骤:

一、下载

npm install jsonwebtoken --save
npm install express-jwt --save

二、生成token和验证token

在user.js文件中

const jwt = require(jsonwebtoken);
//秘钥
var signkey = mes_qdhd_mobile;
//生成token
const setToken = function (username) {
    return new Promise((resolve, reject) => {
        const token = jwt.sign({
            username: username
        }, signkey, { expiresIn:  60 * 60 * 24 * 3 });
        // let info = jwt.verify(token.split(‘ ‘)[1], signkey)
        // console.log(info);
        console.log(token,token);
        resolve(token);
    })
}
//验证token
const verToken = function (token) {
    return new Promise((resolve, reject) => {
        var info = jwt.verify(token, signkey ,(error, decoded) => {
            if (error) {
              console.log(error.message)
              return
            }
            console.log(decoded)
          });
        resolve(info);
    })
}

三、获取解析token,判断是否有效

在app.js中

const jwt = require(‘jsonwebtoken‘);
var user = require(‘./user.js‘);
// 解析token获取用户信息
app.use(function(req, res, next) {
  var token = req.headers[authorization];if(token == undefined){
        return next();
    }else{
     user.verToken(token).then((data)=> {
            req.data = data;
            return next();
        }).catch((error)=>{
          console.log(error);
            return next();
        })
    }
});

//验证token是否过期并规定哪些路由不用验证
app.use(expressJwt({
  secret: mes_qdhd_mobile
}).unless({
  path: [/, /user/login]//除了这个地址,其他的URL都需要验证
}));

四、提示

// error handler
app.use(function (err, req, res, next) {
  console.log(err);
  if (err.name === UnauthorizedError) {
    console.error(req.path + ,无效token);
    res.json({
      message: token过期,请重新登录,
      code: 400
    })
    return
  }
  // render the error page
  res.status(err.status || 500);
  res.render(error);
});

睬坑记录:

一直在报format....Bearer [token]....

最后才发现,得到的token前面是有个Bearer的,在前端头部传递时,在token前加上"Bearer ",就成功了!!

jsonwebtoken和express-jwt的使用

标签:前端   status   save   error   handler   header   code   用户权限   ons   

原文地址:https://www.cnblogs.com/blog-zy/p/11840964.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!