zoukankan      html  css  js  c++  java
  • [转]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博客文章一键转载插件

  • 相关阅读:
    java基础问题1
    基本数据类型,string类型的瞎扯,final喜欢干的事儿。final string
    关于区块链不懂的东西
    需求更新表属性
    用户体验——响应时间
    后台运行任务nohup xxxxxx &
    jenkins打包maven工程发现有些包下载不下来
    jenkins复选框插件Extended Choice Parameter plugin
    jmeter上传文件tips
    airflow 简介
  • 原文地址:https://www.cnblogs.com/jialikesensi/p/13192746.html
Copyright © 2011-2022 走看看