ASP0025:使用 AddAuthorizationBuilder 注册授权服务并构造策略。
值 | |
---|---|
规则 ID | ASP0025 |
类别 | 使用情况 |
修复是中断修复还是非中断修复 | 非中断 |
原因
可不再使用 AddAuthorization,而是转换为使用新的 AddAuthorizationBuilder。
规则说明
使用 AddAuthorizationBuilder
来注册授权服务和构造策略。
如何解决冲突
若要解决此规则的冲突,请不再使用 AddAuthorization
,而是改为使用 AddAuthorizationBuilder
。
对于 AuthorizationOptions 的以下属性,此代码修补程序会转变对 setter 的使用:
将停止使用这些 setter,而是转换为对 AuthorizationBuilder 使用等效的方法调用:
当传递给 AddAuthorization
的配置操作使用 AuthorizationOptions
的下列任一成员时,不会报告诊断结果:
- GetPolicy(String) 方法
- DefaultPolicy getter
- FallbackPolicy getter
- InvokeHandlersAfterFailure getter
对于 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();
何时禁止显示警告
此诊断的严重性级别为“信息”。 如果不想使用新语法,则禁止显示警告。