node.js - Express 4 火灾事件结束

标签 node.js express express-session

我正在为快速 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/

相关文章:

node.js - 修改expressjs中间件中的req.path

node.js - 如何使用 Jade 在迭代中使用条件?

mysql - 表 '[database-name].sessions' 不存在 - 使用快速 session

node.js - 在express js中存储 session 数据的最佳选择是什么

node.js - req.user 未在 Express Passport Node js 中的 app.use 上设置为 res.locals

javascript - 删除水平滚动条并使表格更宽

node.js - 使用 node-jira 模块对 JIRA 进行身份验证

javascript - 结合 Mongoose 和 Sails Waterline 的 Node.js

javascript - 将 "@daily-co/daily-js"导入 SvelteKit 应用程序会引发 "global is not defined"错误

javascript - 在 Sequelize 中制作此 SQL