Passport JWT - 未经授权

Kay*_*kyo 5 node.js express jwt passport.js

我遇到了一个问题,它总是在未经授权的情况下返回给我.当我将标题授权设置为收到的令牌时.它返回.

擅自

.

router.get('/dashboard', passport.authenticate('jwt', {session: false}), (req, res) => {

    res.json('It worked: User ID is: ' + req.user._id);

});
Run Code Online (Sandbox Code Playgroud)

.

var jwtOptions = {

    jwtFromRequest: ExtractJwt.fromAuthHeader(),
    secretOrKey: config.jwt.secretOrKey
    //issuer: config.jwt.issuer,
    //audience: config.jwt.audience,
};

passport.use(new JWTStrategy(jwtOptions, (jwt_payload, done) => {

    User.findOne({id: jwt_payload.id}, (err, user) => {

        if (err) {
            return done(err, false);
        }

        if (!user) {
            return done(null, false);
        }

        return done(null, user);

    });

}));
Run Code Online (Sandbox Code Playgroud)

Nit*_*its 9

你必须改变这些事情:

1)你必须将jwtFromRequest:ExtractJwt.fromAuthHeader()更改为jwtFromRequest:ExtractJwt.fromAuthHeaderAsBearerToken(),

2)设置标题:授权:承载{token}

3)jwt_payload._id更改为jwt_payload._doc._id


San*_*h K 0

只需要进行一项更改,使用jwt_payload._doc.id而不是jwt_payload.id