我正在尝试实现一个快速的登录-注销解决方案。
登录:
使用AJAX (Client-Side)
创建cookie
工作很好
注销:
使用AJAX (Client-Side)
req??接收cookie。
所以,当我重新加载页面后,登录操作,我仍然是登录。只有在我强制刷新或多按一次“注销”之后,我才会看到我确实是注销了。
我尝试过许多不同的方法和方法来加载页面和删除cookie,但是似乎没有什么效果。
Javascript:
$("#logout").click(function () {
var username = this.value;
logout(username)
var currentUrl = window.location.href;
window.location.assign(currentUrl); //I tried different methods of reloading the page
});
// perform logout action
function logout(username) {
$.ajax({
type: "POST",
url: "/logout",
data: JSON.stringify({ username: username }),
success: function () {
//just in case remove the cookie
removeLoginCookie()
},
error: function () {
removeLoginCookie()
},
dataType: "json",
contentType: "application/json"
});
}NodeJS:
app.post('/logout', (req, res) => {
try{
res.clearCookie('userlogin', { path: '/' })
res.send({ "status": "Logged out successfully!" })
}catch(e){
res.sendStatus(500);
}
});发布于 2020-02-05 02:00:48
我能够解决这个问题,在重新加载页面之前设置一个超时,但我不喜欢这个解决方案,我仍然好奇为什么会发生这种情况,以及有什么更好的方法来做到这一点。
$("#login").click(function () {
var username = this.value;
logout(username)
setTimeout(()=>{
var currentUrl = window.location.href;
window.location.assign(currentUrl);
}, 500)
});https://stackoverflow.com/questions/60067872
复制相似问题