如何在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
相关产品推荐
相关产品推荐

