我正在为快速 session 设置 session cookie 的最长期限
app.use(session({ secret: process.env.EXPRESS_SECRET, key: 'sid', cookie: {secure: false, maxAge: 3000} }));
如何使用事件发射器或 Express 的自定义事件(内部带有事件发射器) - 在 session 结束时触发事件并将数据发送到 View 层?
最佳答案
不确定我得到你想要实现的目标,但如果你想检查 session 是否结束,你可以设置一个 session 数据
if (req.session.isInit !== true) {
// The session has been reinitialized
// do something here
req.session.isInit = true;
}
否则,您可以轻松实现自己的 session 存储,它将继承您选择的存储(默认情况下,快速内存存储也继承 EventEmitter)并覆盖重置 session 的方法 #destroy
:
var MemoryStore = session.MemoryStore;
var inherits = require('util').inherits;
var MyStore = function () {
MemoryStore.call(this);
};
inherits(MyStore, MemoryStore);
MyStore.prototype.destroy = function (sid, fn) {
this.emit('resetSession');
MemoryStore.prototype.destroy.call(this, sid, fn);
};
var myStore = new MyStore();
myStore.on('resetSession', function () {
// do something here
});
app.use(session({ store: new MyStore()secret: process.env.EXPRESS_SECRET, key: 'sid', cookie: {secure: false, maxAge: 3000} }));
关于node.js - Express 4 火灾事件结束,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30902536/