【发布时间】:2020-05-21 19:02:04
【问题描述】:
我有一个使用 node 作为后端的简单应用程序。每当用户登录时,我使用 cookie 来存储会话,当他们退出时,我删除该 cookie,此外,我使用 ejs 向用户显示某些数据(例如他们的用户名)。
问题是,无论出于何种原因,当我在未登录的情况下进入视图(例如,索引页面)时,在登录后,该视图会显示为好像我没有登录(例如,用户name 不存在),但其他视图就像我一样存在(cookie 在两种情况下都存在);此外,在退出后,我在登录时呈现的视图仍然呈现为好像我是,而另一个则不是(在这种情况下,cookie 不存在)。
我可能认为这与 node/ejs/browsers 如何渲染事物有关,可能会将某些内容存储在缓存中,并且他们甚至不会费心再次请求它(在登录/退出之后),但这会破坏所有前端的登录,因为它假定用户在没有登录/退出时被登录。
我可以做些什么来强制重新加载视图,从而检查我解释的内容是否正在发生?
编辑:我的注销代码如下:
后端:
router.get('/logOut',verifiyLogin, async (req, res) =>{
res.clearCookie('cookie');
return res.status(200).send();
});
前端;
$.ajax({
url: url+"/logOut",
type: "get",
success: function(response) {
window.location.assign('/');
},
error: function(xhr) {
alert('Error: '+xhr.response);
}
});
【问题讨论】:
-
可能是浏览器端页面缓存。在浏览器 devtools 的 Network 选项卡中查找 302 状态代码。
-
@O.Jones 不,我检查了一下,没有返回 302。都是 200。
-
@O.Jones 看起来可行,谢谢。
标签: node.js session-cookies browser-cache