微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何防止更新 AWS Amplify GraphQL API 的 ownerField?

如何解决如何防止更新 AWS Amplify GraphQL API 的 ownerField?

我使用 AWS 的 Amplify 创建了一个 GraphQL API。在架构中,我有一个如下所示的 Comment 模型:

type Comment
  @auth(rules: [{ allow: owner },{ allow: private,operations: [read] },{ allow: public,operations: [read] }])
  @model
  @key(name: "byAuthor",fields: ["authorID"])
  @key(name: "byPost",fields: ["postID"]) {
  content: String!
  createdAt: AWSDateTime!
  id: ID!
  owner: String
  postID: ID!
  updatedAt: AWSDateTime!
}

这赋予所有者创建、读取、更新和删除的权限,并将未经身份验证/经过身份验证的非所有者用户限制为只读。这按预期工作;然而,所有者可以更新 ownerField 的值,实质上是将评论归因于另一个用户......这是一个禁忌。为了防止这种情况,我尝试使用字段级权限(见下文);然而,这似乎并没有停止更新。

...
owner: String @auth(rules: [{ allow: owner,operations: [ create ]}])
...

有什么我遗漏的吗?非常感谢您的帮助——谢谢!

解决方法

你很亲近。使用字段级 @auth 指令,您希望明确授予所有者 createread 的能力,并明确拒绝世界update 和 {{1 }}。它可能看起来像:

delete

这里,“FORBIDDEN”组是一个不存在的组。只要您不打算在将来实际使用该名称创建组,它的名称就可以是任何名称。由于没有用户永远拥有“FORBIDDEN”组声明,因此对该字段的任何/所有 type Todo @model @auth(rules: [{ allow: owner,ownerField: "author" }]) { id: ID! name: String! author: String @auth( rules: [ { allow: groups,groups: ["FORBIDDEN"],operations: [update,delete] } { allow: owner,ownerField: "author",operations: [create,read] } ] ) } update 操作都将失败。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。