我想知道默认情况下表示会话会持续多长时间,我指定了一个 session.cookie.maxAge 来表示何时启用“记住我”复选框并且它工作正常,但默认值(当未定义 maxAge 和过期时)是持久的即使我关闭浏览器也永远。
来自 Expressjs 文档:
cookie.expires 指定 Date 对象作为 使 Set-Cookie 属性过期。 默认情况下,不设置过期时间,并且 大多数客户会认为这是一个“非持久性cookie”并且会 在退出网络浏览器应用程序等条件下删除它。
注意如果选项中同时设置了expires和maxAge,则最后一个 对象中定义的就是所使用的。
注意expires选项不应该直接设置;而只使用 maxAge 选项。
如果无法在浏览器关闭时销毁会话,那么禁用 Remember-me 时 maxAge 的建议值是多少?
完全取决于您的应用程序的性质。
我想知道express session默认会持续多久
如果你在默认的内存存储上创建了一个会话,那么当服务器重新启动时它将被删除
如果您将会话存储在不同的商店/数据库中,请查看用于连接商店的包文档。例如使用
connect-mongo
将会话数据存储到 mongoDB,当您不指定到期时间时,将会话存储 14 天(默认)。
但是默认值(当未定义 maxAge 和 expires 时)即使我关闭浏览器也会永远持续。
如果您不指定到期时间,则当用户退出浏览器时,sessionId cookie(存储在用户浏览器中)将被删除。但在(默认)存储上创建的会话将持续存在,直到服务器重新启动。
注意:如果退出浏览器后用户 cookie 未被删除,则用户必须在(chrome)浏览器设置上打开“从上次停下的地方继续”选项
如果无法在浏览器关闭时销毁会话,那么禁用 Remember-me 时 maxAge 的建议值是多少?
如果禁用“记住我”,则不要为该用户创建会话,也不要在一段时间后删除该用户创建的会话(例如:
req.session.cookie.maxAge = 86400000
),或者将 rolling
选项(在会话中)设置为true
,以便用户的 cookie 过期时间更新为会话过期时间