无法获得Passport.js的req.user的值

问题描述

我花了几个小时弄清楚为什么Passport.js序列化用户时为什么我无法获得req.user的值。但是神奇的是,当我删除保存该会话的数据库集合时,它又可以正常工作了。

我的堆栈:

  • Vue.js
  • 快递
  • 猫鼬MongoDb(我将数据存储在Atlas中)
  • Node.js

我使用express-sessionconnect-mongo创建和保存会话数据,并使用它使用Passport.js对用户进行序列化和反序列化

App.js:

const session = require("express-session");
const passport = require("passport");
const MongoStore = require("connect-mongo")(session);

// Sessions
app.use(
  session({
    secret: "this is a sample secret",resave: false,saveUninitialized: false,store: new MongoStore({ mongooseConnection: mongoose.connection }),})
);

//Passport Middleware
app.use(passport.initialize());
app.use(passport.session());

然后我在这样的路线上呼叫req.user

router.get("/users",async (req,res) => {
  try {
    if (req.user) {
      res.send(req.user)
    } else {
      res.send("no-user-found",)
    }
  } catch (err) {
    console.error(err);
  }
});

我在前端使用本地主机端口8080上的Vue.js和Axios调用/api/users。此外,通过调用http://localhost:3000/api/users在服务器本身上进行了测试

现在它可以工作了,现在我已经 删除 在MongoDb Atlas上的sessions数据库集合。

我只是想知道为什么会这样?将来会再次重复吗?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)