我正在使用express-session模块来设置具有过期期限的 session 。过了这个期限,当页面刷新时,cookie 将被删除。但是,比如当用户注销时,我想强制删除cookie。我已经使用 req.session.destroy 成功销毁了 session 。
我尝试过使用:
res.clearCookie('SID').status(200).send('Page');
在 req.session.destroy 内,
不过,如果我在浏览器中查看 cookie 详细信息,我会看到内容设置为空,并且过期日期设置为 1970 年 1 月 1 日星期四 01:00:00,
尽管 cookie 不会自行删除。我还在 session 存储配置中设置了 unset: 'destroy'
,但这并没有解决我的问题。
中间件:
app.use(session({
store: new MemoryStore({
checkPeriod: 86400000
}),
cookie: {
secure: true,
maxAge: 10000
},
secret: secret,
resave: false,
saveUninitialized: false,
name: 'SID',
unset: 'destroy'
}));
提前致谢。
最佳答案
您需要强制设置req.session.cookie.expires
或req.session.cookie.maxAge
的值。
以这段代码为例,
var timeInMillseconds = 3600000;
req.session.cookie.expires = new Date(Date.now() + timeInMillseconds);
req.session.cookie.maxAge = timeInMillseconds;
现在使用这个中间件
app.use(session({
secret: 'mySecre',
saveUninitialized: true
}))
app.get('/', function(req, res){
req.session.myUser = "myUser";
req.session.cookie.expires = new Date(Date.now() + 36000000);
req.session.cookie.myDog = "myDog";
res.status(201).send(req.session); //you can also use 200
console.log(req.session);
})
关于node.js - 如何使用 Express-Session 强制删除 session ID Cookie?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46123018/