NodeJs Express passport-jwt 从令牌中获取错误的用户
Posted
技术标签:
【中文标题】NodeJs Express passport-jwt 从令牌中获取错误的用户【英文标题】:NodeJs Express passport-jwt getting wrong user from token 【发布时间】:2021-05-14 03:44:48 【问题描述】:我在节点服务器上设置了一个 auth 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);
);
)
);
;
【问题讨论】:
【参考方案1】:解决这个问题:改变
User.findOne( id: jwt_payload.id ,
到
User.findOne( _id: jwt_payload._id ,
【讨论】:
【参考方案2】:当您通过 objectId 搜索时,您可以使用
User.findById(jwt_payload.id);
【讨论】:
以上是关于NodeJs Express passport-jwt 从令牌中获取错误的用户的主要内容,如果未能解决你的问题,请参考以下文章