如何通过AWS Amplify AppSync GraphQL @auth指令禁止公开用户列表查询
核心问题原因
你当前配置中的
read是Amplify GraphQL预留的组合操作权限,默认包含get(单条查询)、list(列表查询)、sync(同步查询)三类操作,所以公开用户会自动获取listCustomers的调用权限。
修正后的Schema配置
type Customer @model @auth(rules: [ # 公开用户权限:仅保留单条查询、创建、更新,移除列表权限 {allow: public, operations: [get, create, update]}, # admin组权限:默认拥有全量操作权限(包含列表查询、删除等) {allow: groups, groups: ["admin"]}, # partner组权限:仅允许单条查询 {allow: groups, groups: ["partner"], operations: [get]} ]) { id: ID! firstName: String lastName: String email: String phone: String }
权限规则说明
- 公开未登录用户:仅可通过自己持有的id调用
getCustomer查询单条自身数据,可创建、更新Customer,调用listCustomers会直接返回权限错误 - admin用户组:拥有Customer的增删改查、列表查询全量权限,可正常调用
listCustomers获取全量数据 - partner用户组:仅可调用
getCustomer查询单条Customer数据,无法调用列表查询,也没有增删改权限
生效验证步骤
- 修改schema后执行
amplify push部署后端 - 分别用未登录状态、admin组账号、partner组账号调用
listCustomers接口,验证权限拦截逻辑是否符合预期 - 验证三类用户的get、create、update操作是否正常可用
内容的提问来源于stack exchange,提问作者emch2
相关产品推荐
相关产品推荐

