如何防止访问 Amplify graphql 公共 API 中的某些字段

Posted

技术标签:

【中文标题】如何防止访问 Amplify graphql 公共 API 中的某些字段【英文标题】:How to prevent access to certain fields in Amplify graphql public API 【发布时间】:2020-12-10 06:15:48 【问题描述】:

我在 Amplify 中有一个 graphql 模型,如下所示:

type Blog @model @auth(rules: [
     allow: owner ,
     allow: groups, groups: ["admins"] ,
     allow: public, provider: apiKey, operations: [read] 
    ])
    id: ID!
    title: String!
    content: String!
    author: String

我希望所有字段都可以通过 API 密钥进行读取访问,但“作者”字段除外。它应该只能由所有者和“管理员”组读取。 我已经尝试过各种***和字段级@auth 指令的组合,但它不起作用。 有谁知道如何解决这个问题。 谢谢

【问题讨论】:

我也有类似的问题.. 你在哪里可以弄清楚如何做到这一点? 【参考方案1】:

您是否尝试过使用Field Level Authorization?

type User @model 
  id: ID!
  username: String
  ssn: String @auth(rules: [ allow: owner, ownerField: "username" ])

更新:我的错误,在你的问题中确实说你试过了。

【讨论】:

以上是关于如何防止访问 Amplify graphql 公共 API 中的某些字段的主要内容,如果未能解决你的问题,请参考以下文章

AWS Amplify AppSync GraphQL @Auth 指令:如何禁止为公共用户列出元素

在 AWS Amplify 中更改我的 GraphQL 架构时如何防止丢失生产数据?

使用 AWS Amplify Auth 和 GraphQL API,您将如何进行一些公共和一些私有查询/突变调用?

如果我有登录用户的访问令牌,如何使用 AWS Amplify GraphQL API?

Graphql - 无权访问来自 AWS AppSync Amplify 控制台的错误消息

AppSync/Amplify - 如何定义 GraphQL 订阅