【问题标题】:NodeJs Express passport-jwt getting wrong user from tokenNodeJs Express passport-jwt 从令牌中获取错误的用户
【发布时间】: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);
        }
      });
    })
  );
};

【问题讨论】:

    标签: node.js express jwt token passport.js


    【解决方案1】:

    解决这个问题:改变

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

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

    【讨论】:

      【解决方案2】:

      当您通过 objectId 搜索时,您可以使用

      User.findById(jwt_payload.id);
      

      【讨论】:

        猜你喜欢
        • 2021-07-23
        • 1970-01-01
        • 2018-05-07
        • 2020-05-05
        • 2021-07-05
        • 2016-01-31
        • 2017-03-04
        • 2017-02-03
        • 2020-07-12
        相关资源
        最近更新 更多