HotChocolate v13 Schema测试报错:无法解析@AuthorizeDirective
问题原因
HotChocolate v13对授权模块的注册逻辑进行了调整,不再像v12那样自动识别[Authorize]特性,必须显式完成授权服务的注册配置。
可行解决方案
在Schema构建的服务注册链中添加AddAuthorization()扩展方法,同时确保引入HotChocolate.Authorization命名空间:
修改后的Schema测试代码:
using HotChocolate.Authorization; // ... ISchema schema = await new ServiceCollection() .AddGraphQL() .AddAuthorization() // 新增该行,注册授权模块核心逻辑 .AddQueryType<Query>() .AddTypeExtension<PackageQueries>() .AddTypeExtension<VersionQueries>() .BuildSchemaAsync();
补充说明
- 你之前尝试的
AddType<HotChocolate.Authorization.Authorize>()无效,因为Authorize是特性而非Schema类型,v13需要通过AddAuthorization()来注册整个授权指令及配套处理逻辑。 - 如果业务中用到自定义授权策略,还可以在
AddAuthorization()中传入配置委托,示例:
.AddAuthorization(options => { options.AddPolicy("User_Read", policy => policy.RequireRole("User_Read")); })
内容的提问来源于stack exchange,提问作者user21353952
相关产品推荐
相关产品推荐

