express-session退出登录后Cookie仍存在的问题求助
你当前的退出登录路由只销毁了服务器端的会话数据,但没有主动清除客户端的Cookie,所以即便sid已经变更,旧Cookie依然会留在浏览器中。要彻底移除Cookie,需要在req.session.destroy()执行成功后,手动调用res.clearCookie(),且参数必须和你session配置里的Cookie选项严格匹配。
修改后的退出登录路由代码:
router.post('/logout', (req, res) => { req.session.destroy((err) => { if (err) { return res.status(400).end(); } // 清除客户端的sid Cookie,参数与session配置中的cookie选项保持一致 res.clearCookie('sid', { path: '/', httpOnly: true, secure: process.env.NODE_ENV === 'development' ? false : true }); return res.status(200).end(); }); });
关键注意点:
res.clearCookie()的第一个参数必须和session配置里的name字段(即sid)完全一致- 传入的
path、httpOnly、secure选项要和session配置中的cookie参数严格对应,否则浏览器可能拒绝执行清除操作 - 无需提前设置
req.session.user = null,因为req.session.destroy()会直接销毁整个会话对象
内容的提问来源于stack exchange,提问作者mercury
相关产品推荐
相关产品推荐

