在 SPA 的整个用户流程中保持用户身份验证状态是最新的?

Keeping user authentication status up-to-date throughout user flow in SPA?

我正在创建一个 React 前端,它使用存储了会话 ID 的 cookie 向 Express 后端发出经过身份验证的请求。

我想知道处理身份验证状态并保持最新状态的标准是什么——更具体地说,如果管理员用户正在修改当前登录用户(或者说,用户)的属性在另一台设备上点击 "sign out from other sessions"),我们如何在我们的 React 应用程序中保持最新状态,而不是仅仅让 API 请求失败,但用户由于前端状态变得不同步而保持登录状态?

例如,Google 如果访问权限被撤销,文档将很快显示一条消息。我认为这部分是因为他们使用类似于网络套接字的东西来保持连续连接,但是如果我们发出 HTTP API 请求,有哪些行业标准方法可以使当前登录的用户保持在前端是最新的?

一些初步想法:

  1. 将其存储在像 Redux 这样的全局存储中,并将每个 API 请求包装在一个处理程序中,该处理程序会捕获 401(禁止,在用户未获得授权时发送)并分派一个操作以注销。然后当状态更新为未登录时,用户将被重定向到 /login。缺点:我们不知道用户设置的变化,只是他们是否退出。
  2. 在每个请求中,发送另一个 API 请求来检查当前用户信息并根据此更新状态。好处是可以及时了解每项操作,但在网络请求方面似乎相当低效。

最理想的情况似乎是以某种方式"push" 向客户端发送通知,告知其某些内容已更改,以便前端可以相应地进行更新。如果不使用长轮询或套接字,我认为这是不可行的。

请注意,this 问题不是询问更多关于处理身份验证本身的问题,而是关于保持此 "cached" 状态信息与后端中的内容一致。

我做的和你的想法很像。

1) 在redux中保留用户登录状态和设置 2) 每当用户更改设置时,api 响应会发回一个更新的设置对象,该对象会转到 redux 存储以保持更新。

没有更多请求,因为更新的设置对象是对更改设置请求的响应。

希望对您有所帮助