如何在AWS Amplify中为不同GraphQL查询配置独立权限
权限配置修改方案
你当前把@auth规则挂载在了整个Query类型上,所有查询字段都会默认继承这个Admin组访问限制,把规则拆分到每个字段单独配置即可实现需求,修改后的代码如下:
type Query { # 所有Cognito用户池登录用户可访问 invokeLambda: String @function(name: "pythonLambda-${env}") @auth(rules: [{ allow: private }]) # 仅Admins组用户可访问 invokeGetGroups: String @function(name: "getPatchGroups-${env}") @auth(rules: [{ allow: groups, groups: ["Admins"] }]) }
规则说明
allow: private是Amplify GraphQL专属的授权规则,默认适配Cognito用户池认证源,只要是完成登录的有效认证用户都可以调用对应接口。如果你的项目同时配置了多个认证源,可显式指定认证源避免规则冲突,写法为@auth(rules: [{ allow: private, provider: userPools }])。- 字段级配置的@auth规则优先级高于类型级的全局规则,这里直接移除了全局规则,单独给每个字段配置权限,逻辑更清晰无遗留隐患。
内容的提问来源于stack exchange,提问作者Min
相关产品推荐
相关产品推荐

