Partilhar via


ASP0025: Use AddAuthorizationBuilder para registrar serviços de autorização e construir políticas.

Valor
ID da regra ASP0025
Categoria Utilização
A correção é invasiva ou não invasiva Inquebrável

Motivo

O uso de AddAuthorization pode ser convertido para o novo AddAuthorizationBuilder.

Descrição da regra

Use AddAuthorizationBuilder para registrar serviços de autorização e construir políticas.

Como corrigir violações

Para corrigir uma violação desta regra, substitua o uso de AddAuthorization por AddAuthorizationBuilder.

A correção de código converte qualquer uso dos setters para as seguintes propriedades de AuthorizationOptions:

Esses usos de setter são convertidos em chamadas de método equivalentes em AuthorizationBuilder:

Nenhum diagnóstico é relatado quando a ação de configuração passada para AddAuthorization usa qualquer um dos seguintes membros de AuthorizationOptions:

AuthorizationBuilder não tem equivalentes para esses membros do AuthorizationOptions, então eles não podem ser convertidos.

Nenhum diagnóstico será relatado se a ação de configuração passada para AddAuthorization contiver operações não relacionadas ao AuthorizationOptions. A correção de código não seria capaz de mapear automaticamente operações não relacionadas para a API fluente do AddAuthorizationBuilder.

O exemplo a seguir mostra o código que dispara esse diagnóstico:

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

O exemplo a seguir mostra o resultado da aplicação da correção de código:

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

Quando suprimir avisos

O nível de gravidade deste diagnóstico é informativo. Suprima avisos se não quiser usar a nova sintaxe.