我正在开发一个网络应用程序,并且已经有一个登录系统通过 cookie 保持会话。现在我想实现注销功能。我的想法是删除 cookie 会话,但即使我在 node express 发回响应时以各种方式清除 cookie,cookie 也会自动设置。 我真的不知道为什么。我正在使用带有通行证的节点快速服务器登录谷歌,快速会话,前端反应,请求 axios。
这是我对客户的要求:
const Logout = ({ login, setLogin}:Props ) => {
useEffect(() => {
const _response = axios({
method: 'get',
url: `http://127.0.0.1:3002/auth/logout`,
withCredentials: true,
}).then(res => {
if(res.data === 'ok') setLogin(false)
console.log(res.headers['session']);
// window.location.replace('/projects')
})
}, [])
return (<></>);
}
这就是我从服务器获得响应的方式:
router.get("/logout", (req, res, next) => {
res.clearCookie('session')
console.log(res.cookie.name, 'wwwww');
res.setHeader('Set-Cookie', 'ppp')
res.cookie('Set-Cookie', 'ZZZ', { maxAge: 900000, httpOnly: true })
res.send('ok')
});
正如您从响应标头上附加的图像中看到的那样,我有多个 cookie“Set-Cookie”,但默认情况下会插入最后一个(?),我不知道是谁以及为什么插入。
我尝试使用 axios 和 fetch 方法发送不同的请求,将 GET 更改为 POST 等等等等。
有一个 cookie 会话,它不会让我有效地注销。我认为解决方案是删除该 cookie,以便我可以使用另一个 gmail 帐户登录。如果有更好的解决方案,请告诉我。
感谢所有能帮助我的人!