首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >为什么我不能读取关系数据时,我使用iam为auth,但可以读取时,通过身份验证的认知用户池

为什么我不能读取关系数据时,我使用iam为auth,但可以读取时,通过身份验证的认知用户池
EN

Stack Overflow用户
提问于 2020-01-04 05:41:57
回答 1查看 2K关注 0票数 7

我的项目使用认知用户池作为默认的身份验证方法,并对我的自定义graphql解析器使用iam。

我一直在使用AppSync控制台对我的查询/突变进行测试。

我在这个schema.graphql文件中实现了用户类型和组类型之间的多到多关系。

代码语言:javascript
运行
复制
type User
  @model
  @auth(
    rules: [
      { allow: owner, ownerField: "id", operations: [create, update, delete] }
      { allow: private, provider: iam, operations: [read, update, delete] }
      { allow: private, provider: userPools, operations: [read] }
    ]
  ) {
  id: ID!
  displayName: String!
  groups: [GroupMemberLink] @connection(keyName: "byMember", fields: ["id"])
}

type Group
  @model
  @auth(
    rules: [
      { allow: owner, ownerField: "members", operations: [create, update, delete] }
      { allow: private, provider: iam, operations: [read, update, delete] }
      { allow: private, provider: userPools, operations: [read] }
    ]
  ) {
  id: ID!
  name: String!
  members: [String]!
  associated: [GroupMemberLink] @connection(keyName: "byGroup", fields: ["id"])
}

type GroupMemberLink
  @model(queries: null, subscriptions: null)
  @key(name: "byGroup", fields: ["groupID", "memberID"])
  @key(name: "byMember", fields: ["memberID", "groupID"])
  @auth(
    rules: [
      { allow: private, provider: userPools, operations: [read] }
      # what am I doing wrong below?
      { allow: private, provider: iam, operations: [create, read, update, delete] }
    ]
  ) {
  id: ID!
  groupID: ID!
  memberID: ID!
  group: Group! @connection(fields: ["groupID"])
  member: User! @connection(fields: ["memberID"])
}

我的意图:

(create/update/delete)

  • To只允许我的lambda函数(使用iam)读取和执行突变,允许使用认知用户池进行身份验证的用户只读取.

我的问题:

当我从用户或组类型查询时,我的lambda函数无法读取这个关系类型/字段。用户似乎也能够创建这种类型的对象,这是我绝对不想要的。

我做错了什么?据我所知,最近增加了multi,所以这可能很棘手。

阅读这些文档对我没有多大帮助,所以我一直在尝试多种不同的规则组合,并希望其中一种方法能奏效。

Update:每当我尝试访问用户类型或组类型:Not Authorized to access items on type ModelGroupMemberLinkConnection"上的连接字段时,我都会得到这个错误,使用iam作为auth类型。

为了澄清这一点:使用认知用户池进行身份验证的用户同时拥有读/写访问权限(不应该有写访问权限),但是我使用iam的lambda函数没有读写权限。

我尝试过的事情仍然导致在使用iam进行身份验证时无法访问相关字段:

删除auth指令altogether.

  • Changed -- GroupMemberLink中的auth规则到@auth(rules: [{ allow: private, provider: iam, operations: [read, update, delete] }])

更新:

以下是我在AppSync控制台中测试的查询:

代码语言:javascript
运行
复制
query GetUser {
  getUser(id: "funksouldev") {
    id
    displayName
    groups {
      items {
        group {
          id
          name
        }
      }
    }
  }
}

query GetGroup($groupID: ID!) {
  getGroup(id: $groupID) {
    id
    associated {
      items {
        id
        member {
          id
          displayName
        }
      }
    }
  }
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-01-12 23:47:16

好吧,最后我觉得这能解决问题。

代码语言:javascript
运行
复制
type ModelGroupMemberLinkConnection @aws_iam
@aws_cognito_user_pools
   {
    items: [GroupMemberLink]
    nextToken: String
   }
票数 9
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59588247

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档