2017-08-11 69 views
2

所以我看了一些方法如何做到这一点,第一个是用在路线的OnEnter mehods,第二个是有一个更高的组件(如本例中https://medium.com/the-many/adding-login-and-authentication-sections-to-your-react-or-react-native-app-7767fd251bd1React路由器认证控制,如何处理会话结束?

所以在这里,我的问题是不是国家管理,但关于国家更新,让我解释一下。

  1. 我登录成功,我的状态更新,并知道我可以访问'/设置'路线。我的问题是我应该如何正确处理会话结束?如果我注销状态是更新,我不能访问...)

我的问题是我应该如何正确处理会话结束?

登录状态说我仍然连接,但同时会话已过期。所以这意味着我可以访问'/ settings'页面,因为尚未更新。我该怎么办 ?我看到两个选项:

  1. 每次我想访问受保护的路由时,都会向服务器发送请求,以便相应地更新状态。
  2. 我让用户进入'/ settings',但是当他尝试执行某个操作时,我会在服务器端检查会话是否仍然有效,并在会话过期时将其发送到登录页面。

我希望很清楚,您认为更好的选择是什么?我会去的选项2.但

感谢您的帮助

回答

1

简短的回答对你的使用情况我不是100%肯定的:去与选项1

解释:想象一下,你点击“设置”,也许所有的设置都从商店加载。现在,显示所有这些设置是好的,但如果你想更新一些东西呢?您可能会进行更改,甚至填写一些文本字段,只是为了通知您的会话已超时,并且需要重新进行身份验证才能更新/保存设置。另外,如果用户使用共享/公共客户端并忘记注销,该怎么办?即使会话很长时间,所有设置仍将显示。而且更糟糕的是,只需考虑有效缓存用户添加的操作/添加的信息所需的额外工作,一旦重新进行身份验证,就必须重播。

因此,为了不打扰用户和出于安全原因,请使用选项1并确保会话在呈现受保护资源之前仍然有效。

这可以通过很多方式完成,例如发送超时值给您的令牌并检查客户端的值(不是很安全,因为客户端上存储的所有内容都可以在客户端上更改),发送验证在渲染之前使用中间件或HoC请求您的API,两者的组合等等。