NodeJs Express passport-jwt 从令牌中获取错误的用户
NodeJs Express passport-jwt getting wrong user from token
我在节点服务器上设置了一个身份验证 api,使用 passportjs 作为我的中间件和 passport-jwt 作为我的策略。
我的passport.js文件
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);
我在节点服务器上设置了一个身份验证 api,使用 passportjs 作为我的中间件和 passport-jwt 作为我的策略。
我的passport.js文件
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);