我有一个简单的应用程序,它使用node作为后端。每当用户登录时,我都会使用cookie来存储会话,并且当他们注销时,我会删除该cookie,而且,我会使用ejs向用户显示某些数据(例如其用户名)。
问题是,无论出于何种原因,当我未登录而进入视图时(例如索引页面),登录后,该视图就好像我没有登录时一样(例如,用户名不存在),但其他视图也好像我在场一样(两种情况下都存在cookie);同样,在注销后,我在登录时呈现的视图仍然像我一样显示,而其他视图则不存在(在这种情况下,cookie不存在)。
我可能认为这与node / ejs / browsers如何渲染事物有关,可能在缓存中存储了一些东西,他们甚至不费心再次请求(登录/注销后),但是这会中断所有前台的登录,因为它假定在未登录的情况下将用户输入/输出。
我该怎么做才能强制重新加载视图,因此,请检查我是否解释了正在发生的事情?
编辑:我的注销代码如下:
后端:
router.get('/logOut',verifiyLogin, async (req, res) =>{
res.clearCookie('cookie');
return res.status(200).send();
});
frontend;
$.ajax({
url: url+"/logOut",
type: "get",
success: function(response) {
window.location.assign('/');
},
error: function(xhr) {
alert('Error: '+xhr.response);
}
});
您可以添加您的登录和退出代码吗?我与您分享我的方法可能会为您提供帮助。我正在使用express-session和cookie-parser。在注销时,我正在破坏会话并从响应中删除cookie。
req.session.destroy(function(err) {
res.clearCookie('yourCookieName');
res.redirect('/yourDestinationRoute');
});