0

护照.js

module.exports = (passport) => {
passport.use(new LocalStrategy({
    usernameField: 'username',
    passwordField: 'password'
},
    (username, password, done) => {
        user.findOne(({ username: username }), async (err, user) => {
            if (err) { return done(err); }
            if (!user) { return done(null, false); }
            const cpassword = await bcrypt.compare(password, user.password);
            if (!cpassword) { return done(null, false); }
            console.log(user._id)
            const token = jwt.sign(
                {
                    id: user._id,
                    username: user.username
                },
                "shubham"
            );
            adminRecords = {
                token: token
            }

            return done(null, user, adminRecords);
        });
    }
));
passport.use(new JwtStrategy({
    jwtFromRequest: ExtractJWT.fromAuthHeaderAsBearerToken(),
    secretOrKey   : 'key'
}, function(jwt_payload, done) {
    console.log('1')
    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
        }
    });
 }));
};

passport.serializeUser(function (user, done) {
 done(null, user)
})

passport.deserializeUser(function (id, done) {
 user.find(id, function (err, user) {
    done(err, user)
 });
}); 

路由.js

router.post('/profile', passport.authenticate('jwt', { session: false }),
function(req, res) {
    console.log('1')
    res.send(req.user.profile);
 }
);

我正在尝试 passport-jwt 策略,它在生成令牌时返回未授权状态码 401。我正在使用令牌 x-access-token=jwtToken 但它返回未经授权。

我可以尝试调试什么?

4

2 回答 2

0

替换 jwtFromRequest: 如下并尝试

jwtFromRequest:ExtractJwt.fromAuthHeaderWithScheme('JWT');
于 2020-05-25T07:51:52.063 回答
0

尝试在标题中设置

授权:Bearer TOKEN

你应该在令牌和不记名之间有空间

于 2020-05-25T05:30:36.937 回答