我在快递会话的会话cookie上设置了最大年龄
app.use(session({ secret: process.env.EXPRESS_SECRET, key: 'sid', cookie: {secure: false, maxAge: 3000} }));
如何使用事件发射器或express的自定义事件(内部带有事件发射器) - 在会话结束时触发事件并将数据发送到视图层?
答案 0 :(得分:1)
不确定我得到了你想要达到的目标,但是如果你想检查会话是否已经结束,你可以设置一个会话数据
if (req.session.isInit !== true) {
// The session has been reinitialized
// do something here
req.session.isInit = true;
}
否则,您可以轻松实现自己的会话存储,它将继承您选择的存储(默认情况下也是继承EventEmitter的快速存储器存储)并覆盖重置会话的方法#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} }));