以redux状态存储已验证用户的最佳方式



我目前正在使用以下构建一个应用程序

  • Next.js
  • API快车
  • Redux工具包;RTK查询

我已经实现了所有的身份验证逻辑,但遇到了一个问题。

因此,在成功登录后,express api返回2个httponly cookie,其中包含访问/刷新令牌。

我的api中有一个端点,用于获取使用访问令牌的当前用户,即/api/auth/me

这一切都很好,但我想不出在每次页面加载时获取用户并将其存储在redux状态的最佳方式。

我是否使用RTK查询来访问/api/auth/me端点,并在整个应用程序中随时调用查询?

理想情况下,我在_app.tsx中获取并设置用户,但我不能使用redux调度,因为它在<Provider store={store}></Provider>之外

例如,如果我想在getServerSideProps中使用redux存储的用户,我似乎也不能这样做,因为它不是客户端,也不能访问redux。

我似乎找不到一个好的方法来简单地设置经过身份验证的用户,并能够在整个应用程序中全局使用它们,无论是在redux商店中还是在getServerSideProps之类的应用程序中。

任何建议都会非常棒,我完全迷失了方向。

保持身份验证状态的一种方法是将令牌存储在本地存储中。在主应用程序组件中,您可以检查redux存储中是否存在令牌。如果它不在那里,你可以在useEffect功能中手动设置它。

因此:

useEffect(() => {
fetchAuthTokenFromLocalStorage().then((token) => {
dispatch(setAuthenticationResult(token));
});},[dispatch]);

最新更新