【发布时间】:2019-01-12 08:02:00
【问题描述】:
我让用户能够登录、注销、注册、重置密码——所有这些都在我的 React.js 代码中使用 AWS amplify。
在他们登录后,我想获取我的 API 网关,即使用 Authorization: UserCognito,然后转到一个 lambda 函数,我希望能够在该函数中提取传递给我的 API 的数据并返回他们的来自 dynamoDB 的信息及其个人资料信息(例如姓名、图片、电子邮件)。
当我获取 API 时,我得到 {"message":"Unauthorized"}
我这样调用 api:
getProfileInfo(user.signInUserSession.idToken.jwtToken).then(user => {
console.log(user);
});
甚至尝试过这个:
```
let token = await Auth.currentCredentials();
console.log(token);
const options = {
method: "POST",
headers: {
"content-type": "application/json",
Authorization: token.sessionToken
}
};
let res = GetProfileInfo(token.sessionToken);
API.post("XXURL", "", options);
````
getProfileInfo 看起来像:
const getProfileInfo = async user => {
let url = XXXXXXXX
console.log(user);
const data = await fetch(url, {
method: "POST",
headers: {
"content-type": "application/json",
Authorization: user
},
mode: "cors"
})
.then(response => {
console.log(response);
return response.json();
})
.then(data => {
return data;
})
.catch(error => {
return error;
});
return data;
所以 - 我如何将我的用户信息从 AWS-amplify 传递到我的 API,在反应前端 - 这样它就可以授权他们,然后在我接受的地方运行我的 lambda 函数他们的用户信息并在我的 DynamoDB 中查找他们的个人资料?
我的 API 网关在设置我的授权方时将令牌分配给了 Authorization 的值。
另外,我为我的 API 设置了如下所示的模板映射:
```
{
"context" : {
"sub" : "$context.authorizer.claims.sub",
"email" : "$context.authorizer.claims.email"
}
}
```
但是除了 Unauthorized 之外什么都没有返回。那么我做错了什么?
【问题讨论】:
标签: reactjs amazon-web-services authorization aws-amplify