我使用Passport与passport-jwt策略,通过JavaScript Work Token验证用户身份。我需要能够根据一些元数据授权用户,所以我设置了一个自定义回调函数,并将其附加到路由中。JWT无效时无法填充中间件错误
router.get('/', auth.loginRequired, function (req, res) {...
但我在调用该函数时出现问题。我已经大规模简化IT和策略如下图所示:
module.exports = {
loginRequired: function (req, res, next) {
passport.authenticate('jwt', {session: false}, function(err, user, info) {
if (!err) {
next()
} else {
res.status(401).send
}
})(req, res, next)
}
}
下面的策略如图:
passport.use(new JwtStrategy(opts, function(payload, done) {
var user = {firstName: 'Geraint', email: '[email protected]'}
if (payload) {
done(null, user)
} else {
done('Error', null)
}
}))
当JWT是有效的,与null
和预期passport.authenticate
回调被称为用户正确传入。如果JWT无效,则错误将作为信息传递给身份验证回调。 err
为空,user
为假。
如果出现错误,为什么参数混乱?