Reactjs Token 过期时间

IT技术 reactjs login token singlepage
2021-04-30 02:02:49

我使用 Reactjs 登录制作单页网页。问题是如何以及在哪里保存令牌过期时间。我是否需要保存在 sessionStore 中,但是当浏览器关闭时,所有数据都将被删除。本地商店?但数据将永远存在。或者我可以保存在 localStore 中,并且在每个事件中我都必须添加功能,该功能检查 localStore 的过期时间,当事件触发成功时再次更新 localstore?但是代码看起来很糟糕……那么性能问题呢?这种方法可以接受吗?

1个回答

你使用 Redux && Redux thunk 吗?

如果是这样,这是我遵循的方法:

  1. 当用户登录时,我将访问和刷新令牌保留在 Store 中。
  2. 我正在使用redux-persist将令牌保存在 localStorage 中(也有其他存储),以便在用户刷新/重新打开应用程序时保留它们。
  3. 有一个中间件,在每个 API 请求之前检查访问令牌是否仍然有效。
    1. 如果它已过期,请尝试使用刷新令牌刷新访问令牌。
    2. 如果它没有过期,只需执行 API 请求。
  4. 如果用户注销或两个令牌都已过期,那么我会清除 Store(以及通过 redux-persist 的 localStorage)。

更多细节,对于上面的流程,你可以查看原始答案(我从哪里获得灵感):https : //stackoverflow.com/a/36986329/4312466

如果您不使用任何状态管理库:

遵循上述想法是一种选择,但您可以:

  1. 将令牌保留在localStore.
  2. 在您的应用程序中创建一个层(类、函数或任何您想要的),它将充当中间件。每次要调用 API 时,都会先调用这一层,它会检查令牌是否有效:
    1. 如果是这样,只有这样才会触发 API 请求。
    2. 如果令牌过期,该层会将所有进一步的 API 请求保留在队列中,同时尝试刷新令牌。

但是,如果你做SPA并且有复杂的状态操作,我建议你使用一些状态管理库。