Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Reactjs 如何使用本地存储中的令牌进行初始身份验证请求?_Reactjs_Reactjs Flux_Flux - Fatal编程技术网

Reactjs 如何使用本地存储中的令牌进行初始身份验证请求?

Reactjs 如何使用本地存储中的令牌进行初始身份验证请求?,reactjs,reactjs-flux,flux,Reactjs,Reactjs Flux,Flux,我使用香草通量和一些util与我的api进行通信 在初始页面加载时,我希望从本地存储读取一些令牌,然后向我的API发出请求以获取数据 我有一个LocalStorageUtils.js库,用于与window.localStorage交互。我的容器组件处理所有登录/注销操作,并在页面加载时读取当前用户 App.js componentWillMount() { LocalStorageUtils.get('user'); } LocalStorageUtils读取该值,并通过ServerAct

我使用香草通量和一些
util
与我的api进行通信

在初始页面加载时,我希望从本地存储读取一些令牌,然后向我的API发出请求以获取数据

我有一个
LocalStorageUtils.js
库,用于与
window.localStorage
交互。我的容器组件处理所有登录/注销操作,并在页面加载时读取当前用户

App.js

componentWillMount() {
  LocalStorageUtils.get('user');
}
LocalStorageUtils
读取该值,并通过
ServerAction
将其转换为流量,类似于

这会将用户放入我的
UserStore
和我的视图中,在那里我可以显示用户名和一些注销链接,等等

我还有
ApiUtils.js
用于从服务器请求数据。所以问题是:我在哪里告诉我的
ApiUtils
在初始页面加载时我有一个登录用户

我可以从我的
LocalStorageUtils
调用
ApiUtils
中的某个方法,但感觉不太对劲。
或者,每当我在容器组件中获得更改事件时,我是否必须进行另一次往返?

您应该将用户作为数据传递给您的
ApiUtils
类,并且不必担心如何使用
ApiUtils

var ApiUtils = function () {
   this.get = function (endpoint, data) {
      return theWayYouSendAjaxRequests.get(endpoint).setData(data);
   };
};

// Wherever your ApiUtils is used.
var api = new ApiUtils();
api.get('/me', {user: userFromStore});

我找到了一个有效且感觉正确的解决方案

由于从本地存储获取数据是同步的,因此无需通过
ServerActionCreators
将数据通过Flux传输。只需使用
LocalStorageUtils
获取当前用户,并对该用户调用
login
方法。
login
操作与用户最初登录时使用的操作相同<代码>登录触发从服务器获取新数据。新数据保存在my
数据存储中,用户保存在my
用户存储中


感谢您在Twitter和上提供的所有提示。

您将在何时何地获得该用户?你会如何把它变成通量?
var ApiUtils = function () {
   this.get = function (endpoint, data) {
      return theWayYouSendAjaxRequests.get(endpoint).setData(data);
   };
};

// Wherever your ApiUtils is used.
var api = new ApiUtils();
api.get('/me', {user: userFromStore});