NodeJs Express passport-jwt从令牌中获取错误的用户



我已经在节点服务器上设置了一个认证api,使用passportjs作为中间件,使用passport-jwt作为策略。

My passport.js file

let JwtStrategy = require("passport-jwt").Strategy,
ExtractJwt = require("passport-jwt").ExtractJwt;
// load up the user model
let User = require("../models/user");
let config = require("../config/database"); // get db config file
module.exports = function (passport) {
var opts = {};
opts.jwtFromRequest = ExtractJwt.fromAuthHeaderWithScheme("jwt");
opts.secretOrKey = config.secret;
passport.use(
new JwtStrategy(opts, function (jwt_payload, done) {
User.findOne({ id: jwt_payload.id }, function (err, user) {
if (err) {
return done(err, false);
}
if (user) {
done(null, user);
} else {
done(null, false);
}
});
})
);
};

要解决这个问题:更改

User.findOne({ id: jwt_payload.id }, 

User.findOne({ _id: jwt_payload._id }, 

当你通过objectId搜索时你可以使用

User.findById(jwt_payload.id);

最新更新