所以我读了几个方法,第一个是在路由上使用 onEnter 方法,第二个是有更高的组件(如本例https://medium.com/the-many/adding-login-and-authentication-sections-to-your-react-or-react-native-app-7767fd251bd1)< / p>
所以我的问题不是关于状态管理,而是状态更新,让我解释一下。
我的问题是我应该如何正确处理会话结束?
登录状态是说我仍然连接但同时会话已过期。因此,这意味着我可以访问“/ settings”页面,因为尚未更新。我该怎么办 ?我看到两个选择:
我希望很清楚,您认为更好的选择是什么?我会选择2.但我不是100%肯定
感谢您的帮助
答案 0 :(得分:1)
您的用例的简短回答:选择选项1.
说明:想象一下,您点击&#34;设置&#34;并且可能所有设置都是从商店加载的。现在,显示所有这些设置很好,但如果你想更新一些内容怎么办?您可能会进行更改甚至填写一些文本字段,只是为了通知您的会话已超时,并且您需要重新进行身份验证才能更新/保存您的设置。此外,如果用户正在使用共享/公共客户端并忘记注销,该怎么办?即使会话已超时,所有设置仍将显示。更糟糕的是,只需考虑有效缓存用户添加的操作/添加的信息所需的额外工作,这些操作必须在重新进行身份验证后重播。
因此,为了不阻止您的用户并出于安全原因,请使用选项1并确保在呈现受保护资源之前会话仍然有效。
这可以通过多种方式完成,例如使用您的令牌发送超时值并检查客户端的值(不太安全,因为客户端上存储的所有内容都可以在客户端上更改),发送验证请求在渲染之前使用中间件或HoC对您的API进行处理,两者的结合等等。