在弹出 window 中实施身份验证时,Express session cookie 过期

Express session cookie expires when authentication is implemented in a popup window

我有一个 React 应用程序,它使用我为其创建的 Express 后端访问 Twitter API。 React 前端通过 Github 页面提供服务,后端通过 Heroku 服务器提供。

当我最初实现身份验证流程时,我是在同一个选项卡中完成的。 React 应用程序会将请求发送到后端,后端会通过 Twitter 身份验证 URL 进行响应,然后我会在同一选项卡中重定向用户以启动登录过程。登录完成后,我会将用户重定向回应用程序。

这工作正常。 Express 服务器会向前端发送一个 session cookie,所有后续请求都会正常工作。

但是,我想在登录完成后自动关闭的弹出窗口 window 中实现登录流程。我没有在后端更改任何内容,只是前端如何实现登录。但是现在,对后端的后续请求不起作用,因为前端没有在请求中发送 cookie headers。每个新请求都会启动一个新的 session。我知道,因为我在后端记录了 session ID,它们彼此都不相同。

似乎 session cookie 在弹出窗口 window 关闭后过期了一段时间。尽管我将 session cookie 的 maxAge 属性 设置为 24 小时。

这是我后端的 session 选项:

resave: false,
saveUninitialized: false,
proxy: true,
cookie: {
    sameSite: "none",
    secure: true,
    maxAge: 24 * 60 * 60 * 1000,
},

我也将 trust proxy 设置为 1。

在前端,我启动弹出窗口的方式是使用 window.open() 函数。

我到处寻找这个问题的任何解决方案,但我想不出这个。如果有人能帮助我,我将不胜感激。

我想通了。原来这个问题是我特有的,因为我有非常激进的 cookie 清除设置,所以会话 cookie 在弹出 window 关闭后很快就被删除了。