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

AWS Amplify中Cognito用户可执行Mutations但无法执行Queries问题

解决AWS Amplify GraphQL中Cognito用户无法查询Listing的权限问题

问题原因

你的Listing类型@auth规则存在认证方式不匹配的问题:

  • 原规则中allow: public默认仅对API Key认证生效,而你客户端配置的是AMAZON_COGNITO_USER_POOLS认证,因此登录用户无法触发该规则获取查询权限。
  • 增删改操作正常是因为allow: owner规则基于userId字段匹配,对Cognito用户池认证生效。

解决方案1:添加Cognito认证用户的全局读权限

修改Listing类型的@auth规则,新增针对已认证用户的read权限:

type Listing @model @searchable
  @auth(rules: [
    { allow: authenticated, operations: [read] },
    { allow: owner, operations: [create, update, delete], ownerField: "userId" }
  ]) {
  id: ID!
  type: String!
  rentEstimate: Int!
  latt : Float!,
  long : Float!,
 category: String!
  description: String!
  images: [String]!
  userId: String!
}

解决方案2:调整public规则适配Cognito用户池

如果希望保留"公开可读"的逻辑,同时让Cognito登录用户也能触发该规则,可指定provider: userPools:

type Listing @model @searchable
  @auth(rules: [
    { allow: public, operations: [read], provider: userPools },
    { allow: owner, operations: [create, update, delete], ownerField: "userId" }
  ]) {
  id: ID!
  type: String!
  rentEstimate: Int!
  latt : Float!,
  long : Float!,
 category: String!
  description: String!
  images: [String]!
  userId: String!
}

部署更新

修改schema后,执行以下命令重新部署API:

amplify push

部署完成后,用Cognito登录用户执行查询即可正常获取数据。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 16:45:16