You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

浏览器重启后JWT Cookie丢失,登录状态失效问题求助

问题原因与解决方法

核心错误:Cookie配置属性名错误

你代码里的cookieOption使用了expiresIn属性,但Express的res.cookie()方法并不识别这个参数,导致Cookie的有效期未被正确设置,浏览器会将其视为会话Cookie(关闭浏览器即失效)。

Express设置持久Cookie的正确参数为:

  • expires:接收Date对象,指定Cookie的过期时间
  • maxAge:接收毫秒数,指定从当前时间起多久后过期

修正代码

将cookieOption中的expiresIn替换为expires即可:

const cookieOption = {
  expires: new Date(Date.now() + 315360000000), // 10年后过期
  httpOnly: true,
  // 额外优化:根据运行环境配置跨域与安全属性
  sameSite: process.env.NODE_ENV === 'production' ? 'none' : 'lax',
  secure: process.env.NODE_ENV === 'production'
}
res.cookie('userRegistered', token, cookieOption)

或者使用maxAge更直观:

const cookieOption = {
  maxAge: 315360000000, // 10年对应的毫秒数
  httpOnly: true,
  sameSite: process.env.NODE_ENV === 'production' ? 'none' : 'lax',
  secure: process.env.NODE_ENV === 'production'
}

额外检查点

  1. 确保process.env.JWT_EXPIRES设置的JWT有效期与Cookie有效期匹配,避免JWT过期后Cookie仍存在的矛盾情况
  2. 生产环境必须开启secure: true(仅通过HTTPS传输Cookie),否则浏览器可能拒绝保存持久Cookie
  3. 若前后端跨域部署,需配合设置sameSite: 'none'和secure: true,否则Cookie无法正常存储

内容的提问来源于stack exchange,提问作者seriously

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.21 08:27:50