node.js - 如何删除不活动的快速会话?
问题描述
我正在使用express-session
并passport-local
验证我的用户,我希望能够获得当前在线用户。登录工作正常,创建会话并存储用户 ID,我可以获得所有当前会话。但是如果用户注销或离开页面怎么办?会话仍然存在,当我获得所有会话时,即使他离开页面并且不再在线,我也会看到该用户。
我的快速会话代码:
app.use(
session({
store: new (pgSession(session))(),
secret: process.env.SESSION_SECRET,
resave: false,
saveUninitialized: false,
cookie: {
maxAge: 24 * 60 * 60 * 1000
},
})
);
所以我的问题是,是否有某种机制可以删除非活动会话,以及我应该做些什么来确保我的商店中只有活动会话?(我会就这个话题发表任何更长的文章或答案)
解决方案
您正在寻找的是req.session.destroy()
将从您的数据库中删除会话。您可以将此方法集成到您的/logout
路线中。
例子:
router.get('/logout', (req, res, next) => {
req.logout();
req.session.destroy((err) => {
if (err) return next(err);
return res.redirect('/login');
});
});
推荐阅读
- android - 单击gridview中的项目时如何获取选定的列值?
- python-2.7 - 根据值内的条件对(有序)字典的值进行分组
- javascript - 处理多选的帖子请求
- android - 应用程序启动时,应用程序在启动屏幕之前在黑屏上停止
- pandas - 使用 np.where 提取项目出现错误索引超出范围
- windows - 删除动词在 IIS 8 windows 2012 R2 中不起作用
- jquery - Slide up and slide down on mouse scroll
- javascript - 将 eventListener 或 attachEvent 添加到 Electron 中的锚标记的正确方法是什么?
- python - 在 GCE 上运行 selenium(chrome 驱动程序)时出错?
- php - 需要在laravel中集成多个表和多个条件