JWT令牌expiresIn未清除浏览器Cookie问题咨询
这种情况是完全正常的,具体说明如下:
- JWT的
expiresIn是令牌自身的过期标记,仅负责让JWT本身在10秒后失效,和浏览器Cookie的生命周期是两个独立逻辑。你当前没有给Cookie配置过期时间,浏览器会把它当作「会话Cookie」,只要浏览器不关闭就会一直保留。 - 你的Cookie配置缺少
maxAge或expires属性,所以浏览器不会自动清除这个Cookie。后端验证时只是校验JWT本身的有效期,不会主动删除浏览器里的Cookie。 - 如果想要让Cookie和JWT同步过期,只需在设置Cookie时加上
maxAge参数,和JWT的过期时间保持一致:app.post('/api/auth', (req, res) => { const user = req.body; const username = user['username']; const password = user['password']; const token = jwt.sign(user, process.env.JWT_SECRET_HASH, { expiresIn: '10s' }); res.cookie('token', token, { httpOnly: true, secure: true, maxAge: 10 * 1000 // 与JWT过期时间同步,单位为毫秒 }); return res.redirect('/'); }); - 无需担心安全问题:就算Cookie还留在浏览器里,过期的JWT已经失去效力,后端会直接拒绝验证请求,不会造成权限泄露。
内容的提问来源于stack exchange,提问作者Ged0jzn4
相关产品推荐
相关产品推荐

