小编ajj*_*raj的帖子

PassportJS 如何处理会话 cookie?

最初的问题: 我在后端使用passportJS,并使用MongoStore作为会话存储,并使用react前端。

我想做的是允许用户拥有持久的登录会话。已经有一个由express-session 自动设置的名为connect.sid 的cookie。然而,会话似乎不是持久的,因为req.user在使用登录时设置的相同 cookie 的后续请求中未定义该会话。req.user不断返回未定义,这意味着护照没有以某种方式验证会话cookie。

根据护照的文件,这是不应该发生的。

每个后续请求将不包含凭据,而是包含标识会话的唯一 cookie。为了支持登录会话,Passport 将对会话中的用户实例进行序列化和反序列化。

那么我想了解的是 PassportJS 到底如何处理客户端发送的 cookie?

有人可以帮我解释一下护照在这方面采取的步骤吗?

我还在我的猫鼬模型中使用了 Passport-local-mongoose 插件,其中包括下面 auth.js 中使用的内置身份验证/序列化/反序列化方法。

我的代码的相关部分供参考:

app.js:(没有包含完整的文件,因此可以很清楚,因为它有 100 多行,如果有人建议这可能是中间件顺序的问题,我将包含完整的代码)

//session and passport initialization

const sessionStore = new MongoStore({
  mongooseConnection: mongoose.connection,
  collection: "sessions",
});

app.use(
  session({
    secret: process.env.SERVER_SECRET_KEY,
    resave: false,
    saveUninitialized: false, 
    store: sessionStore,
    cookie: {
      path:"/",
      httpOnly: true,
      expires: 9999999999999999
    }
  })
);

app.use(passport.initialize());
app.use(passport.session());
Run Code Online (Sandbox Code Playgroud)

auth.js

const passport = require("passport");
const LocalStrategy = require("passport-local").Strategy;

const config = require("./config"); …
Run Code Online (Sandbox Code Playgroud)

cookies session express passport-local passport.js

5
推荐指数
0
解决办法
4694
查看次数

标签 统计

cookies ×1

express ×1

passport-local ×1

passport.js ×1

session ×1