如何解决结合使用多种授权类型和AWS AppSync GraphQL API
This blog post显示了如何在graphql转换中为模型和字段设置多种授权类型。
让我说我有一个@model Blog
type Blog @model {
id: ID!
adminUserId: String
name: String!
posts: [Post] @connection(keyName: "byBlog",fields: ["id"])
}
使用这种切屑将自动生成以下突变/查询;
createBlog
updateBlog
deleteBlog
getBlog
listBlogs
我希望createBlog
,updateBlog
和deleteBlog
具有授权类型@aws_iam
。
我希望getBlog
和listBlogs
拥有默认的授权类型@aws_cognito_user_pools
如何在schema.graphql
中定义它?
我无法直接在schema.graphql
文件中未定义突变/查询上设置授权类型。
我能够直接在云(AWS AppSync > API Name > Schema
)中生成的完整模式中设置auth类型,因为这里所有的查询/突变都已定义。但是,每次我运行amplify push
时,都会重写此架构。
必须有更好的方法吗?
解决方法
仅供参考,我已经解决了。答案是auth指令。
此架构将允许cognito(我的默认身份验证)为只读内容,iam可以执行所有操作。这正是我想要的。
type Blog @auth(rules: [{ allow: private,provider: iam,operations: [read,create,update,delete] },{ allow: private,operations: [read] }]) @model {
id: ID!
adminUserId: String
name: String!
posts: [Post] @connection(keyName: "byBlog",fields: ["id"])
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。