如何挂钩到express会话创建事件
How to hook into express session creation event
如何判断express何时创建新会话?我使用的是mongodb会话存储。
我在创建额外会话时遇到了问题,我想通过跟踪哪些url请求触发了要创建的新会话来缩小问题的范围。
这就是我最终所做的。
app.use(function(req, res, next) {
if (!req.session.returning) {
// session was just created
req.session.returning = true
} else {
// old session
}
next()
})
您可以挂接到genid
回调。默认情况下,express-session
生成自己的会话ID。
但是,您可以通过指定genid
回调来自己生成会话ID。在这个回调中,您可以记录正在创建的新会话(然后返回一个唯一的会话ID)。
以下是一个示例,改编自express-session
自述:
app.use(session({
genid: function(req) {
console.log('New session was created');
return genuuid(); // generate a UUID somehow and return it
},
secret: 'keyboard cat'
}));
内特的回答很好。我之所以回答是因为我想做两个补充。
- 如果您还想要express会话生成的sessionID类型。您可以执行以下操作:
const uid = require('uid-safe').sync;
//...
genid: function(req) {
console.log('New session was created');
// do what you want to do here!
return uid(24); // <-- the way express-session generates it
},
- 请注意,您不能将
async
函数用于genid。Express会话在没有await
的情况下调用此函数,因此将获得promise而不是uid
相关文章:
- 如何在jQuery Mobile 1.4 Datepicker中创建事件
- 如何在浏览器页面切换到我的网站选项卡时创建事件,如gmail中的聊天框状态更改
- 正在创建事件侦听器以从本地存储中删除对象
- 如何为范围滑块创建事件处理程序
- 在完整日历的Dayclick事件上触发jQuery qTip,然后使用其中的按钮创建事件
- 为什么我的 UI/可拖动“创建”事件被传递一个空的“ui”对象
- 在嵌套循环中创建事件处理程序的效率:我在这里创建了 1440 个函数
- JavaScript - 动态创建事件侦听器
- 使用 Javascript 关闭窗口时创建事件
- Outlook.com 应用程序 - 如何在预填充 HTML 正文的情况下创建事件
- 如何在 GAS 中转换和传递日期以在 Google 日历中创建事件
- 在某些数据之后创建事件对象
- 如何在javascript中动态创建事件和事件处理程序
- Office 365日历API基于创建事件触发对应用程序的调用
- 使用谷歌关闭创建事件
- 如何挂钩到express会话创建事件
- 删除并重新创建事件的元素:
- 如何在单独的页面上创建事件
- 为用户在Firefox或Chrome中右键单击并检查元素创建事件处理程序
- 如何在点击上一页/下一页时创建事件?FullCalendar