护照 jwt 返回状态代码为 401 的未授权



护照.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-acccess-token=jwtToken,但它返回未经授权的。

我可以尝试什么来调试它?

尝试在标题中设置

授权:不记名令牌

令牌和持有者之间应该有空格

替换 jwtFromRequest: 如下并尝试

jwtFromRequest:ExtractJwt.fromAuthHeaderWithScheme('JWT');

最新更新