Ich verwende Passport mit der passport-jwt Strategie, Benutzer mit einem JavaScript Work Token zu authentifizieren. Ich muss Benutzer basierend auf einigen Metadaten autorisieren können, so dass ich einen benutzerdefinierten Rückruf eingerichtet habe, den ich an die Route anhefte.Middleware nicht ausfüllen Fehler, wenn JWT ungültig ist
router.get('/', auth.loginRequired, function (req, res) {...
aber ich habe Probleme beim Aufruf der Funktion. Ich habe es massiv vereinfacht und die Strategie wie folgt:
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)
}
}
Die Strategie ist unten dargestellt:
passport.use(new JwtStrategy(opts, function(payload, done) {
var user = {firstName: 'Geraint', email: '[email protected]'}
if (payload) {
done(null, user)
} else {
done('Error', null)
}
}))
Wenn der JWT gültig ist, die passport.authenticate
Rückruf mit null
wie erwartet aufgerufen wird und der Benutzer wird korrekt übergeben. Wenn der JWT jedoch ungültig ist, wird der Fehler als Information an den Authentifizierungsrückruf weitergeleitet. err
ist null und user
ist falsch.
Warum werden die Parameter bei einem Fehler durcheinander gebracht?