Express会话默认持续多长时间

问题描述 投票:0回答:2

我想知道默认情况下表示会话会持续多长时间,我指定了一个 session.cookie.maxAge 来表示何时启用“记住我”复选框并且它工作正常,但默认值(当未定义 maxAge 和过期时)是持久的即使我关闭浏览器也永远。

来自 Expressjs 文档:

cookie.expires 指定 Date 对象作为 使 Set-Cookie 属性过期。 默认情况下,不设置过期时间,并且 大多数客户会认为这是一个“非持久性cookie”并且会 在退出网络浏览器应用程序等条件下删除它。

注意如果选项中同时设置了expires和maxAge,则最后一个 对象中定义的就是所使用的。

注意expires选项不应该直接设置;而只使用 maxAge 选项。

如果无法在浏览器关闭时销毁会话,那么禁用 Remember-me 时 maxAge 的建议值是多少?

node.js express express-session
2个回答
1
投票

完全取决于您的应用程序的性质。

  • 出于安全原因,银行性质的应用程序不会将其保留超过 15 分钟。
  • 应用程序会将它们保留数天,例如 Gmail、Facebook。当然,其中大多数现在已经迁移到 JWT(JSON Web Tokens)

0
投票

我想知道express session默认会持续多久

如果你在默认的内存存储上创建了一个会话,那么当服务器重新启动时它将被删除

如果您将会话存储在不同的商店/数据库中,请查看用于连接商店的包文档。例如使用

connect-mongo
将会话数据存储到 mongoDB,当您不指定到期时间时,将会话存储 14 天(默认)。

但是默认值(当未定义 maxAge 和 expires 时)即使我关闭浏览器也会永远持续。

如果您不指定到期时间,则当用户退出浏览器时,sessionId cookie(存储在用户浏览器中)将被删除。但在(默认)存储上创建的会话将持续存在,直到服务器重新启动。

注意:如果退出浏览器后用户 cookie 未被删除,则用户必须在(chrome)浏览器设置上打开“从上次停下的地方继续”选项

如果无法在浏览器关闭时销毁会话,那么禁用 Remember-me 时 maxAge 的建议值是多少?

如果禁用“记住我”,则不要为该用户创建会话,也不要在一段时间后删除该用户创建的会话(例如:

req.session.cookie.maxAge = 86400000
),或者将
rolling
选项(在会话中)设置为
true
,以便用户的 cookie 过期时间更新为会话过期时间

© www.soinside.com 2019 - 2024. All rights reserved.