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 从令牌中获取错误的用户的主要内容,如果未能解决你的问题,请参考以下文章

nodejs 安装express的时候可以指定express的版本吗

nodejs+express+ejs生成项目

nodejs 使用express搭建框架总是报错。

nodejs 怎么全局安装express

求助:关于nodejs使用express,报错:模块缺失

nodejs/express express.createserver 不是函数