每当用户的会话被破坏/超时时,我想运行一个函数。有没有办法在nodejs中使用express使用redis会话存储?
发布于 2012-05-06 22:24:32
会话存储本身继承自EventEmitter:
https://github.com/senchalabs/connect/blob/master/lib/middleware/session/store.js
尽管没有一个实现会发出要绑定的事件,包括redis存储:
https://github.com/visionmedia/connect-redis/blob/master/lib/connect-redis.js
您可以很容易地派生connect-redis并在自己中破解这些事件,这样您就可以在需要的地方绑定到它们……
RedisStore.prototype.destroy = function(sid, fn){
sid = this.prefix + sid;
this.client.del(sid, fn);
};
变成了
RedisStore.prototype.destroy = function(sid, fn){
sid = this.prefix + sid;
this.client.del(sid, fn);
this.emit('destroy');
};
然后你可以绑定到“销毁”事件...
var connect = require('connect')
, RedisStore = require('connect-redis')(connect);
var store = new RedisStore;
store.on('destroy', function() {
// session was destroyed
});
connect.createServer(
connect.cookieParser(),
connect.session({ store: store, secret: 'keyboard cat' })
);
https://stackoverflow.com/questions/7762299
复制