promise - 在带有 ra-data-json-server 承诺问题的 react-admin 中合并 ra-cognito
问题描述
我一直在 react-admin 中使用自己的身份验证实现(使用 cognito),但我想切换到 ra-cognito。但是我不知道如何在 ra-data-json-server 的 httpClient 中实现 AWS Amplify 的 Auth.currentSession() 承诺。
我的旧/当前代码运行良好:
import jsonServerProvider from 'ra-data-json-server';
const httpClient = (url, options = {}) => {
if (!options.headers) {
options.headers = new Headers({Accept: 'application/json'});
}
// cognitoIdToken item set on authentication
const cognitoIdToken = localStorage.getItem('cognitoIdToken');
options.headers.set('Authorization', cognitoIdToken);
return fetchUtils.fetchJson(url, options);
}
我的新代码:
import jsonServerProvider from 'ra-data-json-server';
const httpClient = (url, options = {}) => {
if (!options.headers) {
options.headers = new Headers({Accept: 'application/json'});
}
return Auth.currentSession()
.then(data => {
options.headers.set('Authorization', data);
console.log('Authorization set...', data);
})
.then(fetchUtils.fetchJson(url, options));
}
新代码显然是错误的,但我想不出将 Auth.currentSession 承诺合并到 httpClient 函数中。
解决方案
忘记返回第一个 promise 的结果 oops...
import jsonServerProvider from 'ra-data-json-server';
const httpClient = (url, options = {}) => {
if (!options.headers) {
options.headers = new Headers({Accept: 'application/json'});
}
return Auth.currentSession()
.then(data => {
options.headers.set('Authorization', data);
return options;
})
.then(options =>
return fetchUtils.fetchJson(url, options)
);
}
推荐阅读
- c++ - 将类对象保存到二进制文件
- c++ - 为什么我的 C++ 函数没有被执行?
- firebase - 如何使用 Hasura 和 firebase 设置 refresh_Token 调用
- directory - Zsh - 如何在子目录中获取同名文件并排除特定目录?
- php - 根据 PHP 中的 php 变量值禁用 HTML 元素
- plotly - 绘图标记大小与绘图地理绘图面积的比率是多少?
- php - 我在 Mysql 中只得到一个值
- matlab - 使用最大最小方法的模糊相似关系
- reactjs - 在 Nivo 折线图中显示日期从第 1 天开始
- javascript - 我在哪里可以找到 lodash/fp 包的文档?