【问题标题】:When i deserializeUser in passportJS the user does not get passed当我在passportJS中反序列化用户时,用户没有通过
【发布时间】:2021-05-06 19:28:38
【问题描述】:

我有这个问题,当我从我的护照 js 会话中反序列化我的用户时,我可以获取用户并将其传递给 passportjs。但是passportjs似乎没有将它传递给我的身份验证码。这是我的反序列化代码

passport.deserializeUser(async function (id, done) {
  console.log("Deserializing")
  User.findByPk(id).then(function (user) {
    console.log("Deserialised user" + user.Username);
    done(null, user)
  },
    function (err) {
      console.error(err);
      done(err);
    }
  )
});

这是我的身份验证代码

app.get('/api/loginTest', function (req, res, next) {
  passport.authenticate('local',(err, user, info) => {
    
    if (err) {
      console.error("ERROR: " + err);
      return next(err);
    }
    if (!user) {
      console.error("No User" + user);
      return res.send('No User')

    }
    console.log(user);
    return res.send("Logged in");
  })(req, res, next);
});

最后但并非最不重要的是运行此代码的控制台输出。

istening at http://localhost:3000
Executing (default): SELECT "id", "Username", "Password", "createdAt", "updatedAt" FROM "Users" AS "User" WHERE "User"."Username" = 'Frederik' LIMIT 1;
Deserializing
Executing (default): SELECT "id", "Username", "Password", "createdAt", "updatedAt" FROM "Users" AS "User" WHERE "User"."id" = 15;
Deserialised userFrederik
No Userfalse

如您所见,让用户进入反序列化功能没有问题。但是,一旦我尝试在身份验证中间件中使用用户。用户只是 NULL

【问题讨论】:

    标签: javascript node.js express passport.js


    【解决方案1】:

    我能够解决问题。我只需要使用req.user 而不是user

    http://www.passportjs.org/docs/username-password/

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-09-03
      • 2014-10-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-10-16
      相关资源
      最近更新 更多