在AppSync GraphQL转换中,是否可以基于表中的字段设置@auth规则AuthStrategy?

时间:2019-12-17 19:13:42

标签: amazon-web-services graphql aws-appsync

是否有一种方法可以根据表中的字段有条件地设置多个AuthStrategy?

假设我有一个博客文章类型:

type Post
  @model
  @auth(rules: [
    { allow: owner, operations: [read, update, delete] },
  ])
{
  id: ID!
  owner: String!
  visibility: Visibility!
  title: String!
  body: String!
  whitelist: [String!]  
}

enum Visibility {
  PUBLIC,
  PRIVATE,
  PROTECTED,
  SECRET
}

我希望创建者能够设置帖子是否为

  1. 公开:无论是否登录,任何人都可以看到它。
  2. 私人:任何已登录的用户都可以看到它。
  3. 受保护:该用户列表可以看到它。
  4. 秘密:只有创建者才能看到它。

我知道如何对每个硬编码。但是以编程方式...

这是否有可能,或者AppSync转换太基础了,我需要使用自定义解析器吗?

1 个答案:

答案 0 :(得分:0)

事实证明,这确实需要一个自定义解析器(或自定义嵌套解析器),这很容易。

有关此授权方案的官方文档:https://docs.aws.amazon.com/appsync/latest/devguide/security-authorization-use-cases.html

有关此授权方案的一篇很棒的Hacker Noon文章:https://hackernoon.com/graphql-authorization-with-multiple-data-sources-using-aws-appsync-dfae2e350bf2