Sai*_*Akh 2 amazon-web-services reactjs aws-appsync aws-amplify
我很难弄清楚如何在使用AWS Amplify和AWS AppSync的React应用程序中处理未经身份验证的用户。似乎大多数文档建议使用withAuthenticatorHOC 打包整个应用程序,aws-amplify-react但在现实世界中,这种情况很少见。
所以在这里,我如何设置客户端与AppSync API进行通信
const client = new AWSAppSyncClient({
url: AppSyncConfig.aws_appsync_graphqlEndpoint,
region: AppSyncConfig.aws_appsync_region,
auth: {
type: AUTH_TYPE.AMAZON_COGNITO_USER_POOLS,
jwtToken: async () =>
(await Auth.currentSession()).getIdToken().getJwtToken()
}
});
Run Code Online (Sandbox Code Playgroud)
然后包装顶级App组件export default withAuthenticator(App);
所有这些都有效,用户点击了根URL并获得了登录视图。如前所述,在现实世界中这是非常罕见的情况。通常,根URL以及许多其他URL向未经身份验证的用户开放。如何使用AWS Amplify完成它?-没有文档,而不是tut :-(
我发现了一些使它在这里工作的提示,但仍然没有完整的解释。
我们正在努力在更新版本的Amplify CLI中轻松实现此自动化。
同时,使用以下步骤:
使用以下步骤,您可以允许对您的AWS AppSync API进行身份验证和未经身份验证的访问:
amplify init
Run Code Online (Sandbox Code Playgroud)
amplify add auth
Run Code Online (Sandbox Code Playgroud)
您是否要使用默认的身份验证和安全配置?没有
选择您要使用的身份验证/授权服务:(使用箭头键) 用户注册,登录以及与AWS IAM控件连接(为图像或其他内容启用每用户存储功能,Analytics(分析)等)
请为您的资源提供一个友好名称,该名称将用于在项目中标记此类别:YOURAPINAME
请输入您的身份池的名称。YOURIDPOOLNAME
允许未经身份验证的登录?(提供范围的下降权限您可以通过AWS IAM控制)是
选择其余问题的默认值
amplify add api
Run Code Online (Sandbox Code Playgroud)
选择“ Amazon Cognito用户池”作为授权类型。
amplify push
Run Code Online (Sandbox Code Playgroud)
在AppSync API仪表板设置中,将身份验证类型更改为AWS Identity and Access Management(IAM)
在aws.exports.js客户端应用上,更改aws_appsync_authenticationType为AWS_IAM
在Cognito仪表板中,单击“管理身份池”,然后单击您的身份池。
单击“编辑身份池”以查看您的“未经身份验证的角色”和“经过身份验证的角色”
打开IAM控制台并从步骤8中找到“未经身份验证的角色”
点击“添加内联政策”
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"appsync:GraphQL"
],
"Resource": [
"arn:aws:appsync:<REGION>:<ACCOUNTID>:apis/<APIID>/types/Mutation/fields/listTodos"
]
}
]
}
Run Code Online (Sandbox Code Playgroud)
打开IAM控制台并从步骤8中找到“已认证角色”
点击“添加内联政策”
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"appsync:GraphQL"
],
"Resource": [
"arn:aws:appsync:<REGION>:<ACCOUNTID>:apis/<APIID>/types/Mutation/fields/listTodos",
"arn:aws:appsync:<REGION>:<ACCOUNTID>:apis/<APIID>/types/Mutation/fields/createTodo"
]
}
]
}
Run Code Online (Sandbox Code Playgroud)
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"appsync:GraphQL"
],
"Resource": [
"arn:aws:appsync:<REGION>:<ACCOUNTID>:apis/<APIID>/types/Mutation/fields/listTodos"
]
}
]
}
Run Code Online (Sandbox Code Playgroud)
$context.identity.cognitoIdentityId解析器。
| 归档时间: |
|
| 查看次数: |
1225 次 |
| 最近记录: |