我已在 Vercel 中部署了 MERN 应用程序。我遇到注销问题。注销后,如果刷新,我会再次登录。 cookie 没有被删除,但它在本地环境中被删除。
res.cookie('token', '', {
expires: new Date(0),
httpOnly: true,
secure: true,
sameSite: 'None',
});
res.status(200).json({
success: true,
message: "logged out"
})
我使用 null 代替“”。
按照chatGPT的建议也尝试过这个。
exports.logout = catchAsyncError(async (req, res, next) => {
res.cookie('token', '', {
expires: new Date(0),
httpOnly: true,
secure: true,
sameSite: 'None',
domain: process.env.COOKIE_DOMAIN,
path: '/'
});
res.status(200).json({
success: true,
message: "logged out"
})
})
但没有任何效果
看起来第二个片段是将 Cookie 或会话设置为新会话,而不是清除现有会话。
res.clearCookie(name, [ options ])
Name:要清除的cookie的名称。
Options:它是一个可以具有各种属性的对象,如域、编码、路径、安全等。
设置cookie
res.cookie('mytoken', '', {
expires: new Date(0),
httpOnly: true,
secure: true,
sameSite: 'None',
domain :process.env.COOKIE_DOMAIN
});
res.status(200).json({
success: true,
message: "logged out"
})
清除cookie
res.clearCookie('mytoken', domain :'process.env.COOKIE_DOMAIN
});