我正在尋找過期會話的方式。這是我的計劃 我想生成RSA公鑰/私鑰取決於用戶到達我的網站時的會話。我在公共密鑰到達我的網站時發送公共密鑰,當他們嘗試登錄時,他們使用公鑰對其ID/PW進行加密,服務器使用私鑰對其解密。我需要在用戶登錄後每次會話都過期,或者只是離開網站以節省服務器內存。所以我決定爲任何會話設置超時時間。無論他們是否登錄,每個會話都將以這種方式被刪除。在快速會話中過期不起作用
我發現我可以使用'expires'屬性使會話在特定時間後被刪除,但它不起作用。
這是我的代碼
var RedisStore = require('connect-redis')(session);
var redis = require("redis").createClient();
app.use(session({
store: new RedisStore({host: 'localhost', port:6379, client:redis,
resave:false}),
secret: 'keyboard cat',
expires : '1000'
}));
app.get('/logincheck', function(req, res){
console.log('session check : ' + req.session.redSession);
if(req.session.redSession){
res.json({
result : 'on'
});
}
else {
res.json({
result : 'off'
});
}
});
app.post('/login', function(req, res) {
req.session.redSession = req.body.id;
console.log('session check : ' + req.session.redSession);
if (req.body.id == 'fuck' && req.body.password == 'you') {
res.json({
message: 'ㅊㅋ'
});
//sess.id = req.body.id;
return;
} else {
res.json({
message: 'fuck you'
});
return;
}
});
我登錄,等待超過一秒鐘,發送/ logincheck但我「上」了。正如我所預料的那樣,會話應該在一秒鐘內過期,它會自行退出,因此req.session.redSession中不應該有任何內容,因此它必須返回「off」。但它保持返回'開'和console.log('會話檢查:')保持返回字符串(不確定)在服務器端。
我在想什麼錯?如何讓會話在一秒後消失?
我剛編輯我的代碼,因爲你寫,到期到cookie但仍然有同樣的問題 – HyeonWoo
會話不會過期 – HyeonWoo
請確保所有以前的cookie已從您的瀏覽器中刪除。 – robertklep