我目前正在使用以下构建一个应用程序
- 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]);