javascript - JWT 无法与 Express 路由器一起使用

标签 javascript node.js express-jwt

我正在尝试为 Express REST API 实现身份验证系统。

我从教程中获得了使用 jsonwebtoken 的代码。

我的身份验证中间件 verifyToken 无法正常工作。请帮忙。

var express = require('express');
var router = express.Router();
var jwt = require('jsonwebtoken');
var models = require('../models');

function verifyToken(req, res, next) {
    var bearerHeader = req.headers['authorization'];
    if (typeof bearerHeader !== undefined) {

    } else {
        res.sendStatus(403)
    }
}

router.post('/tryjwt', verifyToken, (req, res, next) => {
    res.send('It worked');
});

router.get('/login', function (req, res, next) {
    const user = {
        id: 1,
        usename: 'ayoob',
        email: 'ayoob@gmail.com'
    }
    jwt.sign({ user: user }, 'secretkey', (err, token) => {
        res.json({ token: token })
    });
});

module.exports = router;

最佳答案

if (typeof bearerHeader !== undefined) 为 true 时,您没有执行任何操作。

确保调用next,以便当前中间件可以将控制权传递给下一个中间件

将此代码片段放入 if 语句中

try{
const decode = jwt.verify(bearerHeader, 'secretkey')
  //do something with the decode object 
   next()
}catch(err){
  res.sendStatus(403)
}

关于javascript - JWT 无法与 Express 路由器一起使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50783146/

相关文章:

node.js - azure nodejs 网站/webapp 支持用于 JWT token 生成和验证的加密算法

使用 "this = "的 Javascript 函数给出 "Invalid left-hand side in assignment"

node.js - 谷歌云部署太慢了

javascript - 如何删除 X-Frame-Options 响应 header ,允许应用程序进行 iframe

node.js - 有条件地更新 Mongoose 查询中的项目

typescript - protected 路由的 jest.mock express-jwt 中间件行为

node.js - angular-jwt 如何在没有 secret 的情况下解码我的 JWT?

javascript - 访问具有变化值的 Javascript 对象

javascript - 转换 JavaScript 代码

javascript - foreach 内的 textContent 无法运行,没有错误