我正在将"express": "~4.14.0"
与express-session
一起保存用户名。登录用户后,我将将用户名保存在req.session.authorizedUser = username
中以显示在应用程序标题中。
当清除浏览器历史记录或关闭浏览器时,我想清除会话。
请建议我如果在进行这两个操作中的任何一个时都可以清除会话。我尝试为会话cookie设置maxAge
选项,如下所示,但这并不反映:
app.use(session({
secret: "key test",
resave: false,
saveUninitialized: true,
cookie: { secure: !true, path: '/', httpOnly: true, maxAge: null}
}));
由于浏览器删除cookie时不会通知服务器(无论出于何种原因),因此,如果会话会话仍然有效与否。
这就是为什么大多数会话商店都有到期的机制,该机制将在特定时间之后删除空闲会话(通常与maxAge
相关)。
例如,connect-mongo
Session Store使用MongoDB的TTL功能从数据库中删除过期的会话。
除了占用一些存储空间外,闲置会议并不是问题。当用户再次登录时,将为他们创建一个新的会话,旧会话最终将过期并从存储中删除。