2011-05-04 96 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(); 
});