在弹出 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 关闭后很快就被删除了。
我有一个 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 关闭后很快就被删除了。