我正在使用带有redis-store
的express-session,它会创建一个httpOnly
cookie的会话详细信息。我应该如何处理cookie到期和用户清除的cookie,以便可以将用户重定向回登录页面?
以下是场景:
_session
已由用户清除。_session
即将到期。因此,自然的响应是用户重新加载站点时,React应该注销他。我应该如何处理?
答案 0 :(得分:0)
我假设您的Nodejs + Express代码是JSON API,而不是提供服务器端呈现的网页。在这种情况下,如果使用过期/不存在的会话cookie发出请求,则只应返回错误。您可以将其捆绑到一块中间件中,因此您只需编写一次即可,而无需多次编写。例如,此中间件可能返回错误,指示“无效会话”。
在反应方面,如果API为错误/不存在的会话cookie创建的特定错误是由API返回的,则取决于您的反应代码来决定要做什么。您可能选择将用户发送到一个页面,告诉他们他们已经注销,或者您可能希望将他们直接发送到登录提示,指示他们必须重新进行身份验证。
如果_session
cookie过期,浏览器将简单地为您清除它。因此,在API方面,您需要担心的是未提供cookie或服务器端代码以某种方式使会话无效。
示例方案:
如您所见,在任何一种情况下都可以返回相同的错误,前端将解释此错误并决定如何使用户重新进行身份验证(通常是通过将用户再次重定向到登录屏幕)
答案 1 :(得分:0)
app.get('*', function (request, response) {
response.sendFile(path.resolve(__dirname, 'public', 'index.html'));
});
@Elliot,这就是我在Express中为React服务的方式。当我点击reload时,此调用被调用并进行React加载。在API调用中,我们有一个错误方法。但是在这种情况下,没有错误方法,那么如何注销用户?