| 價值 | |
|---|---|
| 規則識別碼 | 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();
隱藏警告的時機
此診斷的嚴重性層級為「資訊」。 如果您不想使用新語法,請隱藏警告。