我使用 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 ]}])
...
有什么我想念的吗?非常感谢任何帮助-谢谢!