我不知道这是否会解决您的问题,但这可能是一种可接受的解决方法,并且会产生不同的结果。使用它来强制执行有效的 is-logged-in 安全策略:
// Add policy in Startup.cs
services.AddAuthorization(options =>
{
options.AddPolicy("LoggedInPolicy", Policies.LoggedInPolicy);
});
然后添加一个策略类
public class Policies
{
/// <summary>
/// Requires the user to be logged in
/// </summary>
/// <param name="policy"></param>
public static void MultiFactorAuthenticationPolicy(AuthorizationPolicyBuilder policy)
{
policy.RequireAuthenticatedUser();
}
}
然后使用您的授权属性装饰适当的端点以应用策略
/// <summary>
/// Test 'hello world' endpoint
/// </summary>
/// <returns>The current date/time on the server</returns>
[Authorize(Policy = "LoggedInPolicy")]
public string Hello()
{
return DateTime.Now.ToString("O");
}
您可能还必须将此添加到 GraphQL 配置中
SchemaBuilder.New()
...
.AddAuthorizeDirectiveType()
...
.Create();
(来自https://chillicream.com/docs/hotchocolate/v10/security/,不知道这有多少适用于 v11)
这可能与一些不同的错误处理程序有关。