You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在AWS GraphQL Schema中设置授权读者数组?

实现动态指定读者访问特定记录的方案

1. 修改GraphQL Schema

在现有ToDo类型中添加readers字段,并更新@auth规则,同时支持所有者全权限管理和读者只读访问:

type ToDo
@model
@auth(rules: [
  # 允许owners数组内的用户拥有完全读写权限,可管理记录及读写者列表
  { allow: owner, ownerField: "owners", operations: [create, read, update, delete] },
  # 允许readers数组内的用户仅拥有只读权限
  { allow: owner, ownerField: "readers", operations: [read] }
])
{
    id: ID!
    content: String
    owners: [String] # 记录所有者,拥有完全操作权限
    readers: [String] # 被授权的读者,仅能查看记录
}

2. 权限逻辑说明

  • 所有者权限:owners数组中的用户可执行所有CRUD操作,包括修改owners和readers数组,实现动态添加/移除所有者和授权读者。
  • 读者权限:readers数组中的用户仅能读取对应记录,无法修改记录内容或权限配置。

3. 操作示例

  • 创建ToDo时初始化权限列表:
    mutation CreateToDo {
      createToDo(input: {
        content: "完成项目部署",
        owners: ["user-xxx-1"],
        readers: ["user-xxx-2", "user-xxx-3"]
      }) {
        id
        content
        owners
        readers
      }
    }
    
  • 所有者动态更新读者列表:
    mutation UpdateToDo {
      updateToDo(input: {
        id: "todo-001",
        readers: ["user-xxx-2", "user-xxx-4"] # 移除user-xxx-3,添加user-xxx-4
      }) {
        id
        readers
      }
    }
    

4. 注意事项

  • owners和readers字段存储的是用户唯一标识(比如Cognito用户ID),需确保传入的ID格式正确。
  • 若需要更精细的权限控制(比如部分读者可修改特定字段),可结合@auth规则的fields参数进一步配置。

内容的提问来源于stack exchange,提问作者O. Durand

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.02 22:18:14