如何使用本地存储中的令牌发出初始身份验证请求?
How to make initial authenticated request with token from local storage?
我正在使用香草助焊剂和一些 utils
来与我的 API 交流。
在初始页面加载时,我想从本地存储中读取一些令牌,然后向我的 API 发出请求以获取我的数据。
我有一个 LocalStorageUtils.js
库用于与 window.localStorage
交互。我的容器组件处理所有 login/logout 操作并在页面加载时读取当前用户。
App.js
componentWillMount() {
LocalStorageUtils.get('user');
}
LocalStorageUtils
读取值并通过 ServerAction
将其带入 Flux,类似于 flux chat example.
get(key) {
var value = window.localStorage.getItem(key);
if (value) {
ServerActionCreators.receiveFromLocalStorage(key, value);
}
}
这会将用户放入我的 UserStore
和我的视图中,我可以在其中显示用户名和一些注销 link 等
我还有 ApiUtils.js
从服务器请求数据。所以问题是:我在哪里告诉 ApiUtils
我在初始页面加载时有一个登录用户?
我可以从 LocalStorageUtils
中调用 ApiUtils
中的某些方法,但感觉不对。
或者,每当我在容器组件中收到更改事件时,我是否必须进行另一次往返?
您应该将用户作为数据传递给您的 ApiUtils
class 并且无需担心您的 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
操作与用户最初登录时使用的操作相同。login
触发从服务器获取新数据。新数据保存在我的DataStore
,用户保存在我的UserStore
.
感谢 Twitter 和 https://reactiflux.slack.com/ 的所有提示。
我正在使用香草助焊剂和一些 utils
来与我的 API 交流。
在初始页面加载时,我想从本地存储中读取一些令牌,然后向我的 API 发出请求以获取我的数据。
我有一个 LocalStorageUtils.js
库用于与 window.localStorage
交互。我的容器组件处理所有 login/logout 操作并在页面加载时读取当前用户。
App.js
componentWillMount() {
LocalStorageUtils.get('user');
}
LocalStorageUtils
读取值并通过 ServerAction
将其带入 Flux,类似于 flux chat example.
get(key) {
var value = window.localStorage.getItem(key);
if (value) {
ServerActionCreators.receiveFromLocalStorage(key, value);
}
}
这会将用户放入我的 UserStore
和我的视图中,我可以在其中显示用户名和一些注销 link 等
我还有 ApiUtils.js
从服务器请求数据。所以问题是:我在哪里告诉 ApiUtils
我在初始页面加载时有一个登录用户?
我可以从 LocalStorageUtils
中调用 ApiUtils
中的某些方法,但感觉不对。
或者,每当我在容器组件中收到更改事件时,我是否必须进行另一次往返?
您应该将用户作为数据传递给您的 ApiUtils
class 并且无需担心您的 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
操作与用户最初登录时使用的操作相同。login
触发从服务器获取新数据。新数据保存在我的DataStore
,用户保存在我的UserStore
.
感谢 Twitter 和 https://reactiflux.slack.com/ 的所有提示。