Express session cookie在弹出窗口验证时过期



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

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

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

然而,我想在一个弹出窗口中实现登录流,一旦登录完成就自动关闭。我没有改变后台的任何东西,只是改变了前端如何实现登录。但是现在,对后端的后续请求不起作用,因为前端没有在请求头中发送cookie。每个新的请求都会启动一个新的会话。我知道,因为我记录会话ID在我的后端,他们都是不同的。

似乎会话cookie在弹出窗口关闭后一段时间过期。这是尽管我有会话cookie的maxAge属性设置为24小时。

以下是我在后台的会话选项:

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

我还将trust proxy设置为1。

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

我已经到处寻找解决这个问题的方法了,但是我就是想不出来。如果有人能帮助我,我将非常感激。

我明白了。原来这个问题是针对我的,因为我有非常激进的cookie清除设置,所以会话cookie在弹出窗口关闭后不久就被删除了。

最新更新