我正在一个项目上,正在尝试使用中间件验证我的jwt令牌,但在控制台中收到一条错误消息,提示“未定义下一个”, 这是我的代码
在login.js中
const verifyy = require('./verifyJWT')
module.exports = (req, res)=> {
verifyy(req, res, next)
}
在中间件所在的verifyJWT.js中,代码如下
const jwt = require('jsonwebtoken')
const fs = require('fs');
var public = fs.readFileSync('./public.pem');
module.exports = (req, res, next)=> {
var token = req.headers.authorization.split(' ')[1]
if (!token) return res.status(401).send({ auth: false, message: 'No token provided.' });
jwt.verify(token, public, function(err, decoded) {
if (err) return res.status(500).send({ auth: false, message: 'Failed to authenticate token.' });
next();
});
}
请问如何解决这个问题或我做错了什么
答案 0 :(得分:0)
我认为问题出在login.js中,您正在导出一个箭头函数,而该箭头函数未在arrow函数中接收下一个参数,并且您将next传递给了verify,因此next是不确定的。
const verifyy = require('./verifyJWT')
module.exports = (req, res)=> {
verifyy(req, res, next)
}
您可以尝试在登录名中传递下一个。
const verifyy = require('./verifyJWT')
module.exports = (req, res, next)=> {
verifyy(req, res, next)
}