2011-05-04 91 views
3

我这里有一个直接从express文件中得到的例子。node.JS - express - connect-redis如何删除记录

app.use(express.cookieParser()); 
app.use(express.session({ secret: "keyboard cat" })); 
var RedisStore = require('connect-redis'); 
app.use(express.cookieParser()); 
app.use(express.session({ secret: "keyboard cat", store: new RedisStore })); 

我知道的是,这段代码将创建一个会话ID,并自动将会话ID存储在redis数据库中。对?

现在,让我们假设生成的session_id是555444,如何在不再需要时删除记录?

回答

2

做这些工作的任何?

store.destroy('555444', function(err) { ... }) 

app.get('/', function(req, res) { 
    if (req.session.sid == '555444') { 
     req.session.destroy(function(err) { ... }); 
    } 
}) 
0

与redis的到期设置每个会话密钥,因此那些将在一段时间后自动过期(按照会话MAXAGE)。 Express session

1

我遇到了类似的情况,我想摧毁现有的会话并在注销期间清除cookie。这似乎对我很好(商店是RedisStore的一个实例)。

app.get('/logout', function (req, res) { 
    res.contentType('json'); 
    store.destroy(req.sessionID, function() { 
    req.session.destroy(function() { 
     res.clearCookie(sessionOpts.key, { path: '/' }); 
     res.send({ success: true }); 
    }); 
    }); 
}); 
0

您只需要将sessionID提供给destroy方法,这将清除Redis数据库中的会话密钥。以下是适用于我的代码:

req.session.destroy(req.sessionID, function() { 
    // Passport logout 
    req.logout(); 
});