amazon-web-services - AWS Amplify AppSync GraphQL @Auth 指令:如何禁止为公共用户列出元素
问题描述
我正在创建一个带有 Amplify 后端的 React 应用程序。到目前为止效果很好,但我想禁止某些用户可以列出一些元素。让我举一个例子 graphql 定义:
type Customer @model
@auth(rules: [
{allow: public, , operations: [read,create,update]},
{allow: groups, groups: ["admin","partner"] }])
{
id: ID!
firstName: String
lastName: String
email: String
phone: String
}
我们有未登录的客户,因此他们是公开的。他们知道他们的 id(因为它在他们创建客户条目后的 url 中)并且他们应该能够更新、读取和创建他们自己的用户。那工作得很好。 不幸的是,他们也可以使用 listCustomers 查询。所以他们可以看到所有其他条目。我可以以某种方式禁止这个吗?据我了解,“读取”操作意味着“获取”和“列表”。
认知群体也应该如此。“admin”应该能够做所有事情,包括“list”和“partner”应该只能“get”。
有人有想法吗?我已经阅读了文档并用谷歌搜索了它,但似乎我没有找到答案。
此致
解决方案
回答我的问题:
您可以为授权规则添加 {allow: public, queries: [get, list], mutation: [create,update]}。不幸的是,这已被弃用。我不知道将来是否会有类似的东西。
请参阅:https ://docs.amplify.aws/cli/graphql-transformer/auth/#definition
type Customer @model @auth(rules: [
{ allow: public, queries: [get], mutations: [create,update]},
{ allow: groups, groups: ["admin"] },
{ allow: groups, groups: ["partner"], queries: [get], mutations: []}])
{
id: ID!
firstName: String
lastName: String
email: String
phone: String
request: [Request] @connection(keyName: "byCustomer", fields: ["id"])
}
推荐阅读
- swift - 在 Swift 中,导航栏消失并且永远不会回来
- groovy - 显示一个键的多个值
- python - 从数据库中获取 TransmogrifAI 的数据
- python-3.x - Pandas Excel 读取 - 整数列在循环时转换为浮点数
- angular5 - ng add 不适用于使用 angular 5 的 ngx-bootstrap
- android - 在 Service 、Alarm Manager 和 Job Scheduler 中哪个概念最好使用
- azure - 如何在 Azure 流分析中解压缩 Gzip 数据?
- redis - Redis 键在集群模式下被自动删除
- xml - xml 类型元素的术语是什么
- xamarin.forms - 如何在 xamarin StackLayout 中为 TextEdit 和 Button 提供 ID