我一直在react-admin(使用cognito)中使用自己的身份验证实现,但是我想切换到ra-cognito。但是我无法弄清楚如何在ra-data-json-server的httpClient内实现AWS Amplify的Auth.currentSession()承诺。
我的旧/当前代码运行正常:
document.addEventListener('click', function enableSubmit(event)
{
let submitBtn = document.getElementById("submitBtn");
if (event.target.type === "radio" && event.target.name === "number")
{
submitBtn.removeAttribute("disabled");
// Now, we can also remove this vary event listener:
document.removeEventListener('click', enableSubmit);
}
});
我的新代码:
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);
}
新代码显然是错误的,但是我不知道将Auth.currentSession承诺合并到httpClient函数中。
答案 0 :(得分:0)
忘记返回第一个承诺结果...
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)
);
}