【问题标题】:Restrict lambda resolver to owner for GraphQL API using Amplify使用 Amplify 将 lambda 解析器限制为 GraphQL API 的所有者
【发布时间】:2022-06-17 05:09:33
【问题描述】:

在我的schema.graphql 文件中,我有以下内容:

type Floorplan @model @auth(rules: [
        { allow: private, operations: [read], provider: userPools },
        { allow: owner, provider: userPools }
    ]) @aws_cognito_user_pools {
    id: ID! @primaryKey
    name: String!
    bedrooms: Int!
}

input FloorplanInput {
    id: ID!
    name: String!
    bedrooms: Int!
}

type Mutation {
    floorplanLambda(input: FloorplanInput): Floorplan 
    @function(name: "floorplanLambda-${env}")
    @aws_cognito_user_pools
}

我创建了 lambda 函数以在更新前执行自定义验证。 问题是任何经过身份验证的用户都可以更新其他用户的平面图。我以为添加 @aws_cognito_user_pools 可以解决这个问题,但事实并非如此。

问题:我需要添加什么来锁定floorplanLambda函数,以便它只能由Floorplan模型的所有者成功调用?

调用 floorplanLambda 时,我收到错误消息:“未授权访问 Floorplan 类型的 floorplanLambda”。我正在使用 authMode AMAZON_COGNITO_USER_POOLS 拨打电话。

对于更多上下文,我按照本教程创建了自定义突变 lambda 函数:https://www.theclouddeveloper.io/use-lambda-resolvers-in-your-graph-ql-api-with-aws-amplify

【问题讨论】:

    标签: graphql aws-amplify


    【解决方案1】:

    所以根据我的 GitHub issue 的回复,目前不支持这个工作流。你可以在这里关注它:https://github.com/aws-amplify/amplify-category-api/issues/528#issuecomment-1157894170

    解决方法由以下人员提供:

    ...将身份验证规则设置为私有,然后执行 lambda 函数中的验证...

    我正在考虑创建一个自定义身份验证函数,然后将其链接到我的自定义突变前面。不确定这是否可行,但我会在取得一些进展后报告。

    【讨论】:

      猜你喜欢
      • 2020-11-12
      • 2019-03-28
      • 2020-05-09
      • 2015-05-26
      • 2019-09-29
      • 2020-09-12
      • 2020-08-19
      • 2021-10-19
      • 2019-06-19
      相关资源
      最近更新 更多