如何使用 AppSync GraphQL 转换为一对多 @connection 执行 @auth?
How to do @auth for one-to-many @connection with AppSync GraphQL Transform?
我的问题与这个问题非常相似:。我会问一个稍微不同的 graphql 模式,并希望得到一个更通用的答案。一个示例模式是:
type Blog @model @auth(rules: [{ allow: owner }, { allow: public, operations: [read] }]) {
id: ID!
name: String!
posts: [Post] @connection }
type Post @model @auth(rules: [{ allow: owner }, { allow: public, operations: [read] }]) {
title: String!
bodyText: String!
假设用户名为 "User1" 的用户创建了一个博客项目。此数据库条目最终为
Blog: { owner: "User1", id: "0b7f6862-1a46-4006-8953-e440334c47ec", name: "My First Blog!" }
现在 User2 知道了 User1 博客的 ID -> 即“0b7f6862-1a46-4006-8953-e440334c47ec”。该用户 运行 是
的 createPost 突变
input: { postBlogId: "0b7f6862-1a46-4006-8953-e440334c47ec", title: "I'm User1 and I Hate Puppies!", bodyText: "Puppies should be illegal!" }
这有效!用户 2 已注入一个 post,当连接到 Posts 时,它将显示在对用户 1 博客的查询中。好像不好。
另一个问题中接受的解决方案似乎依赖于 table 中的 id 字段,即 "one-to-many" 连接关系中的 "one" 字段恰好兼作所有者字段.但是这个问题似乎存在于任何一对多连接中,其中大多数都没有这种约束。
人们找到保护它的方法了吗?我同意另一个问题,这似乎是每个人都必须打的。
我考虑在 id 字段上添加字段级身份验证以将其限制为仅允许所有者读取加上辅助 ID 密钥以提供给其他用户 运行 获取,但在上进行字段级身份验证id 等必填字段会中断订阅。我能想到的唯一其他方法是阻止在 "one-to-many" 连接关系的 "many" 侧创建和更新任何类型,然后添加 运行 lambdas 上的自定义突变服务器可以查询另一个 table 以验证用户是否有权建立连接。但是,如果您必须这样做,放大文档似乎会在某处提到它?真的很感激被告知我错过了一些愚蠢的事情。
显然这是 的副本
自动执行此操作的 RFC 仍然开放,并且已经一年没有更新了。 https://github.com/aws-amplify/amplify-cli/issues/1055
我的问题与这个问题非常相似:
type Blog @model @auth(rules: [{ allow: owner }, { allow: public, operations: [read] }]) {
id: ID!
name: String!
posts: [Post] @connection }
type Post @model @auth(rules: [{ allow: owner }, { allow: public, operations: [read] }]) {
title: String!
bodyText: String!
假设用户名为 "User1" 的用户创建了一个博客项目。此数据库条目最终为
Blog: { owner: "User1", id: "0b7f6862-1a46-4006-8953-e440334c47ec", name: "My First Blog!" }
现在 User2 知道了 User1 博客的 ID -> 即“0b7f6862-1a46-4006-8953-e440334c47ec”。该用户 运行 是
的 createPost 突变input: { postBlogId: "0b7f6862-1a46-4006-8953-e440334c47ec", title: "I'm User1 and I Hate Puppies!", bodyText: "Puppies should be illegal!" }
这有效!用户 2 已注入一个 post,当连接到 Posts 时,它将显示在对用户 1 博客的查询中。好像不好。
另一个问题中接受的解决方案似乎依赖于 table 中的 id 字段,即 "one-to-many" 连接关系中的 "one" 字段恰好兼作所有者字段.但是这个问题似乎存在于任何一对多连接中,其中大多数都没有这种约束。
人们找到保护它的方法了吗?我同意另一个问题,这似乎是每个人都必须打的。
我考虑在 id 字段上添加字段级身份验证以将其限制为仅允许所有者读取加上辅助 ID 密钥以提供给其他用户 运行 获取,但在上进行字段级身份验证id 等必填字段会中断订阅。我能想到的唯一其他方法是阻止在 "one-to-many" 连接关系的 "many" 侧创建和更新任何类型,然后添加 运行 lambdas 上的自定义突变服务器可以查询另一个 table 以验证用户是否有权建立连接。但是,如果您必须这样做,放大文档似乎会在某处提到它?真的很感激被告知我错过了一些愚蠢的事情。
显然这是