我正在寻找过期会话的方式。这是我的计划 我想生成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