ASP0025:使用 AddAuthorizationBuilder 注册授权服务并构造策略。

规则 ID ASP0025
类别 使用情况
修复是中断修复还是非中断修复 非中断

原因

可不再使用 AddAuthorization,而是转换为使用新的 AddAuthorizationBuilder

规则说明

使用 AddAuthorizationBuilder 来注册授权服务和构造策略。

如何解决冲突

若要解决此规则的冲突,请不再使用 AddAuthorization,而是改为使用 AddAuthorizationBuilder

对于 AuthorizationOptions 的以下属性,此代码修补程序会转变对 setter 的使用:

将停止使用这些 setter,而是转换为对 AuthorizationBuilder 使用等效的方法调用:

当传递给 AddAuthorization 的配置操作使用 AuthorizationOptions 的下列任一成员时,不会报告诊断结果:

对于 AuthorizationBuilder 的这些成员,AuthorizationOptions 没有等效项目,因为不会转换它们。

如果传递给 AddAuthorization 的配置操作包含与 AuthorizationOptions 无关的操作,不会报告诊断结果。 代码修补程序无法将不相关的操作自动映射到 AddAuthorizationBuilder 的 Fluent API。

以下示例演示了触发此诊断的代码:

var builder = WebApplication.CreateBuilder(args);

builder.Services.AddAuthorization(options =>
{
    options.AddPolicy("AtLeast21", policy =>
        policy.Requirements.Add(new MinimumAgeRequirement(21)));
});

var app = builder.Build();

app.UseAuthorization();

app.Run();

以下示例演示了应用代码修补程序的结果:

var builder = WebApplication.CreateBuilder(args);

builder.Services.AddAuthorizationBuilder()
  .AddPolicy("AtLeast21", policy =>
  {
        policy.Requirements.Add(new MinimumAgeRequirement(21)));
  });

var app = builder.Build();

app.UseAuthorization();

app.Run();

何时禁止显示警告

此诊断的严重性级别为“信息”。 如果不想使用新语法,则禁止显示警告。