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

Amplify @auth规则疑问:public权限无法通过API Key访问listTodos

解决Amplify @auth规则中allow: public无法通过API Key访问的问题

问题场景

搭建测试Amplify @auth规则的基础应用,GraphQL Schema中Todo类型配置了@auth(rules: [{ allow: public }]),Blog类型配置了@auth(rules: [{ allow: owner }])。API默认认证方式为Cognito用户池,API Key作为二级认证类型。执行列表查询时,Blog查询成功,但Todo返回权限错误:Not Authorized to access listTodos on type Query,预期allow: public允许API Key访问但未生效。

解决方案

  • 显式指定public规则的认证提供者
    当API默认认证为Cognito时,allow: public不会自动关联到API Key,需要在@auth规则里显式添加provider: apiKey参数,修改后的Schema如下:

    type Todo @model @auth(rules: [{ allow: public, provider: apiKey }]) {
      id: ID!
      name: String!
      description: String
    }
    
  • 重新部署API
    修改Schema后,执行命令重新推送API配置:

    amplify push api
    

    等待部署完成,让AppSync更新对应的权限规则。

  • 确认API Key状态与请求认证方式

    1. 打开AppSync控制台,进入你的API,检查设置->认证里的API Key是否启用且未过期。
    2. 在AppSync控制台执行listTodos查询时,选择认证类型为API Key,并填入有效的API Key值;如果是客户端请求,确保请求头包含x-api-key字段,值为你的API Key。
  • 验证认证类型配置
    再次通过amplify update api确认API Key已被添加为二级认证类型,避免配置遗漏。

内容的提问来源于stack exchange,提问作者JimmyTheCode

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 20:45:31