[转]jsonwebtoken和express-jwt的使用

(转载请删除括号里的内容)

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';//生成tokenconst 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);    })}//验证tokenconst 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 handlerapp.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 ",就成功了!!


---------------------
作者:神经质少女爱代码
来源:CNBLOGS
原文:https://www.cnblogs.com/blog-zy/p/11840964.html
版权声明:本文为作者原创文章,转载请附上博文链接!
内容解析By:CSDN,CNBLOG博客文章一键转载插件

原文地址:https://www.cnblogs.com/jialikesensi/p/13192746.html