价值 | |
---|---|
规则 ID | ASP0025 |
类别 | 用法 |
修复是中断修复还是非中断修复 | 非中断 |
原因
将 AddAuthorization 替换为 AddAuthorizationBuilder 是可能的。
规则说明
使用 AddAuthorizationBuilder
注册授权服务和构造策略。
如何修复违规行为
若要修复此规则的冲突,请将用法 AddAuthorization
替换为 AddAuthorizationBuilder
。
此代码修复将转换 AuthorizationOptions 以下属性的 setter 的任何使用方式:
这些 setter 用法将转换为在 AuthorizationBuilder 上的等效方法调用。
当传递给 AddAuthorization
的配置操作时使用 AuthorizationOptions
的以下任一成员,不会报告任何诊断。
- GetPolicy(String) 方法
- DefaultPolicy 获取器
- FallbackPolicy 获取器
- InvokeHandlersAfterFailure 获取器
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();
何时禁止显示警告
此诊断的严重性级别为信息。 如果不想使用新语法,请禁止显示警告。