我有一个简单的应用程序,它使用节点作为后端。每当用户登录时,我都会使用 cookie 来存储会话,当他们注销时,我会删除该 cookie,此外,我还使用 ejs 向用户显示某些数据(例如他们的用户名(。
问题是,无论出于何种原因,当我在没有登录的情况下进入视图(例如,索引页(时,登录后,该视图显示为我未登录(例如,用户名不存在(,但其他视图存在,就好像我是一样(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);
}
});
您可以添加登录和注销代码吗? 我正在分享你我的方法可能会帮助你。 我正在使用快速会话和cookie解析器。 注销时,我正在销毁会话并从响应中删除cookie。
req.session.destroy(function(err) {
res.clearCookie('yourCookieName');
res.redirect('/yourDestinationRoute');
});