Node js ejs会话无法正确关闭/打开

问题描述 投票:0回答:1

我有一个简单的应用程序,它使用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);
            }
        });
node.js session-cookies browser-cache
1个回答
0
投票

您可以添加您的登录和退出代码吗?我与您分享我的方法可能会为您提供帮助。我正在使用express-session和cookie-parser。在注销时,我正在破坏会话并从响应中删除cookie。

req.session.destroy(function(err) {
   res.clearCookie('yourCookieName');
   res.redirect('/yourDestinationRoute'); 
});
© www.soinside.com 2019 - 2024. All rights reserved.