You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用GraphQL Shield时Resolver抛自定义错误却返回未授权错误求助

解决graphql-shield拦截自定义错误返回"Not Authorized"的问题

问题原因

当你在shield配置中没有为Query或Mutation下的字段指定规则时,graphql-shield默认会使用deny规则——权限层会直接拦截请求并返回"Not Authorized",你的Resolver代码根本没机会执行,自然抛不出自定义错误。

解决方案

方案1:全局设置默认规则为allow

修改shield初始化配置,添加fallbackRule: allow,让未指定规则的Resolver默认允许访问:

export const permissions = shield({
    Query: {},
    Mutation: {},
}, {
    fallbackRule: allow // 新增全局默认规则
});

方案2:为特定Resolver单独配置allow规则

如果不想全局放开权限,只为目标Mutation指定允许规则:

export const permissions = shield({
    Query: {},
    Mutation: {
        testResolver: allow // 为该Mutation单独设置允许规则
    },
});

验证效果

修改后调用testResolver,权限层会允许请求进入Resolver逻辑,此时你抛出的自定义错误An error occurred就会正常返回。

内容的提问来源于stack exchange,提问作者user12504353

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.18 09:22:52