【未解决】express-session 关闭浏览器后重新打开还是呈现登录状态
app.use(expressSession({
resave: true,// 强制更新 session
saveUninitialized: false,// 设置为 false,强制创建一个 session,即使用户未登录
secret: 'session-cookie',
// store: new MongoStore({// 将 session 存储到 mongodb
// url: 'mongodb://localhost:27017/session-cookie'// mongodb 地址
// }),
// cookie: {maxAge: 1000 * 60 * 60}
}));
var express = require('express');
var router = express.Router();
/* GET users listing. */
router.get('/', function(req, res, next) {
if (req.session.user) {
res.send('login');
} else {
res.send('no login');
}
});
router.post('/login', function (req, res, next) {
console.log(req.session);
req.session.user = req.body.user;
res.send(req.session.user);
});
module.exports = router;
关闭浏览器后重新打开还是呈现登录状态,是缓存的原因吗? 理论上 cookie 存放在浏览器内存中,关闭浏览器以后 cookie 就消失了
一开始的实验也验证了这个理论,重复多次后就出现相反的现象(关闭浏览器后重新打开还是呈现登录状态),是缓存吗?
7 回复
cookie: {maxAge: 1000 * 60 * 60} 因为你配置了cookie的时长,所以浏览器会等到cookie过期,而不是关闭时清除
重新打开浏览器,你的cookie依然有效,所以登陆状态还是存在,可以通过清空mongo数据库里面的session或者清理cookie,使登陆状态失效
@272092461 不是这样的,这个cookie指的是session的持续时间,和客户端的cookie没关系。我注释掉这行以后,情况还是没有改变
@fancylife 我没有用mongodb的时候,也是这种情况。
@zengj8 没有使用mongodb的时候,cookie对应的session持久化是通过内存变量完成的,你把服务进程杀掉,cookie也会失效
@fancylife 我的问题是cookie为什么还在,session自然没失效。这边的cookie是理论上应该是存在浏览器内存中的,关闭浏览器以后不就应该消失吗?
你可以了解一下你使用浏览器的cookie失效机制,是否和你猜测的一样