我已经设置了一个基本应用程序来测试 Amplify 的 @auth 规则。我有这个简单的 graphql.schema:
type Todo @model @auth(rules: [{ allow: public }]) {
id: ID!
name: String!
description: String
}
type Blog @model @auth(rules: [{ allow: owner }]) {
id: ID!
name: String!
posts: [Post] @hasMany
}
...
当我尝试使用 AppSync 执行简单的列表操作时,
Blog
成功,但 Todo
返回错误:Not Authorized to access listTodos on type Query
我已将 API (
amplify update api
) 设置为使用 Cognito 用户池作为默认身份验证,并使用 API 密钥作为辅助身份验证类型。我希望 allow: public
允许使用 API 密钥进行访问,但事实并非如此?
对于公共用户,建议您使用 IAM 对未经身份验证的用户进行身份验证以运行查询。
这是@auth的示例:
type Todo
@model
@auth(
rules: [
{ allow: owner, operations: [create, update, delete, read] }
{ allow: private, operations: [read] }
{ allow: public, provider: iam, operations: [read] }
]
)
更改架构后,转到
CLI
,然后按照此图片写入 amplify update auth
: