graphql - 使用 Amplify GraphQL 进行字段级授权
问题描述
我在整理字段级授权时遇到问题。我希望模型中的特定字段是只读的。
这是架构的简化版本:
type Thing
@model
@auth(
rules: [
{
allow: groups
groups: ["Admins"]
operations: [read, create, update]
}
{ allow: private, operations: [read]}
]
) {
id: ID!
foo: String
bar: String
baz: ID
@auth(
rules: [
{ allow: groups, groups: ["Admins"], operations: [read] }
]
)
}
我的期望是所有用户都可以阅读foo
,bar
和baz
, 但只有其中的成员Admins
才能更新foo
and bar
, 但即使是 Admins 也不允许更新baz
。但是,我发现管理员仍然可以写信给baz
,这是我不想要的。
我认为字段级规则优先于模型级规则。
这样的事情可能吗?
解决方案
从文档来看,这似乎是可能的:
当一个授权规则被添加到一个字段时,它将严格定义应用于该字段的授权规则。字段级授权规则不继承模型级授权规则。意思是,仅应用指定的字段级授权规则。
如果您添加字段级规则,模型似乎会忽略您在模型级别拥有的任何授权。这里有几个示例可供参考:https ://docs.amplify.aws/cli-legacy/graphql-transformer/auth/#field-level-authorization
至于您看到的问题,不确定,似乎您已正确设置它,也许这里还有另一个问题?
推荐阅读
- css - 是否有可能在闪亮的文本输入框中放置一个图标?
- python - 如何禁用 pytest.ini 中的多个插件?
- scala - 为什么scala列表结果是这样的,请关注,谢谢
- java - JavaFX 在同级目录中打开资源
- csv - 创建具有可变类名称的东方 DB 边
- php - 如何摆脱 laravel 中过多的 if 语句?
- google-play-services - 谷歌条形码阅读器可以在手机上不安装播放服务的情况下使用吗?
- android - 在 IntelliJ 中在手机上运行 android 应用程序时出现 ADB 错误
- python - 在 pyspark 中读取数据框时获取空日期?
- scala - 迭代列Scala的元素