Вы используете паспорт js вместе с passport-jwt
. Посмотрите еще раз на документацию о том, как эта стратегия «извлекает» токен JWT (особенно «полезную нагрузку», которая идет с ним) из запроса. Документация Passport-JWT
const JwtStrategy = require('passport-jwt').Strategy,
ExtractJwt = require('passport-jwt').ExtractJwt;
const opts = {
jwtFromRequest : ExtractJwt.fromAuthHeaderAsBearerToken(),
secretOrKey : 'secret',
issuer : 'accounts.examplesoft.com',
audience : 'yoursite.net'
}
passport.use(new JwtStrategy(opts, function(jwt_payload, done) {
// jwt_payload is the payload that you earlier included
// in the jwt token, when you created the jwt token.
// Here you can verify the request,
// For example, check database if user exists.
User.findOne({id: jwt_payload.sub}, function(err, user) {
if (err) {
return done(err, false);
}
if (user) {
return done(null, user);
} else {
return done(null, false);
// or you could create a new account
}
});
}));
При этом обычно не требуется дополнительная функция "checkAuth". Используйте это так:
app.use(passport.authenticate('JWT', {session: false}));
// OR
app.post('/protected', passport.authenticate('JWT', {session: false}), (req, res) => {
// this will only fire when authentication was successfull
// req.user will hold whatever you return in the callback from
// the strategy function.
});