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();

何时禁止显示警告

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