【发布时间】:2021-12-28 19:47:40
【问题描述】:
我有一个 NodeJS + Express 应用程序,需要在应用程序上设置空闲会话超时和最大会话超时。是否有任何设置或选项可用于设置这些值?我查看了 cookie.expires 和 cookie.maxAge。这些是否分别用于设置空闲超时和会话超时。有人可以帮我解决这个问题吗?
提前致谢!
【问题讨论】:
标签: node.js express session session-timeout
我有一个 NodeJS + Express 应用程序,需要在应用程序上设置空闲会话超时和最大会话超时。是否有任何设置或选项可用于设置这些值?我查看了 cookie.expires 和 cookie.maxAge。这些是否分别用于设置空闲超时和会话超时。有人可以帮我解决这个问题吗?
提前致谢!
【问题讨论】:
标签: node.js express session session-timeout
当会话 cookie 在用户浏览器中过期时,会话就会消失。如果您在服务器中实现它,它也可能在一定时间后过期。
要设置空闲超时,比如说 300 秒,您可以这样做。每次访问您的服务器时,您都会再次发送会话 cookie,过期时间为 now+300 秒。如果用户在 cookie 过期之前没有再次访问服务器,则下一次访问将没有 cookie,因此用户不会显示为已登录。
要设置整体超时(最大会话超时),您可以使用服务器代码。在会话数据上设置过期时间。此后,每当您根据会话 cookie 中的会话 ID 查找会话数据时,都会检查过期时间。如果会话已过期,则处理对服务器的命中,就像用户未登录一样。
【讨论】:
"处理会话可以在端、浏览器和服务器端完成。
对于服务器端,您必须使用 express-session npm 包 这是设置会话过期时间的示例代码。
const express = require('express')
const session = require('express-session')
// Use the session middleware
const app = express()
app.use(session({
secret: 'its my secret',
cookie: { maxAge: 60000 }, // value of maxAge is defined in milliseconds.
resave: false,
rolling: false,
saveUninitialized: true
}))
//above-defined code will set session which will get expired after 60 seconds.
不应直接设置 expires 选项;而是只使用 maxAge 选项。 resave 强制将会话保存回会话存储,即使在请求期间从未修改过会话。 滚动:强制在每个响应上设置会话标识符 cookie。过期重置为原来的maxAge,重置过期倒计时。 要在会话中设置任何值,请使用 req.session。 = "
【讨论】: