React Redux身份验证

时间:2017-06-16 11:58:39

标签: javascript reactjs authentication redux

我有以下情况,我有一个REST API和一个React + Redux应用程序。

当用户登录时我将令牌保存到localStorage,基于此,如果用户回到页面,我使用令牌调用服务器/api/whoami { token },我在那里验证令牌并返回用于更新我的Redux商店的用户详细信息。

我的问题是,如果我刷新并且我想在componentDidMount中执行某些操作,即使用户已登录,Redux商店还没有更新,因为对/api/whoami的请求是没完。

我怎样才能等到/api/whoami的请求完成并设置用户然后呈现我的应用程序?

针对此类问题还有其他解决方案吗?

谢谢!

2 个答案:

答案 0 :(得分:1)

您可以在案例中使用所谓的 Aync操作,并在获取详细信息时显示加载组件。

在这里,您必须使用 thunk中间件。它有一个名为redux-thunk的独立包。当动作创建者返回一个函数时,该函数将由Redux Thunk中间件执行。详细阅读here

正常运行:在您开始获取操作,调度和操作之前,将isLoading设置为true,并在收到您的响应后,您将发送另一个将设置的操作isLoading: false并在您的显示屏上显示一个条件,如果isLoading为true,则返回加载组件,否则返回配置文件组件

答案 1 :(得分:0)

我想您知道react-redux并且您对actionstorereducer等一些概念很熟悉。

  

我怎么能等到/api/whoami的请求完成?

使用redux-thunk[redux-saga][1]中间件 ...我建议您使用redux-saga,因为它是一个旨在产生副作用的库(即React / Redux应用程序中的数据提取和不正确的事物(如访问浏览器缓存)等异常事件更容易,更好。

  

如何设置用户然后呈现我的应用程序?

使用中间件,您可以在请求运行时呈现加载视图,并在请求完成后呈现您想要的内容。

阅读redux-saga官方文档了解更多信息和使用示例。