[英]Node/Express with connect-redis, how handle session expiry
[英]Handle redirects after session expiry in ReactJS application with Node/Express backend?
我在redis-store
使用express-session,它创建了会话详细信息的httpOnly
cookie。 我应该如何处理cookie到期和用户清除的cookie,以便可以将用户重定向回登录页面?
以下是方案:
_session
已由用户清除。 _session
已过期。 因此,自然的响应是用户重新加载站点时,React应该注销他。 我应该如何处理呢?
我假设您的Nodejs + Express代码是JSON API,而不是提供服务器端呈现的网页。 在这种情况下,如果使用过期/不存在的会话cookie发出请求,则只应返回错误。 您可以将其捆绑到一块中间件中,因此您只需编写一次即可,而无需多次编写。 例如,此中间件可能返回指示“无效会话”的错误。
在反应方面,如果API为错误/不存在的会话cookie创建的特定错误是由API返回的,则取决于您的反应代码来决定要做什么。 您可能选择将用户发送到告诉他们他们已注销的页面,或者您可能希望直接将他们发送到登录提示,指示他们必须重新进行身份验证。
如果_session
cookie过期,浏览器将简单地为您清除它。 因此,您需要在API端上担心的是没有提供cookie,或者服务器端代码以某种方式使会话无效。
示例方案:
如您所见,在这两种情况下,返回相同的错误都是合适的,前端将解释该错误并决定如何使用户重新进行身份验证(通常是通过将用户再次重定向到登录屏幕)。
app.get('*', function (request, response) {
response.sendFile(path.resolve(__dirname, 'public', 'index.html'));
});
@Elliot这就是我在Express中为React服务的方式。 当我点击reload时,此调用被调用并进行React加载。 在API调用中,我们有一个错误方法。 但是,在这种情况下,没有错误方法,因此如何注销用户?
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.