我使用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
爲假。
如果出現錯誤,爲什麼參數混亂?