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

Valor
ID da regra ASP0025
Categoria Uso
Correção interruptiva ou sem interrupção Sem interrupção

Causa

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 políticas de constructo.

Como corrigir violações

Para corrigir uma violação dessa 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 de AuthorizationOptions, portanto, 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 a AuthorizationOptions. A correção de código não seria capaz de mapear automaticamente operações não relacionadas para a API fluente de 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 desse diagnóstico é Informação. Suprima avisos se você não quiser usar a nova sintaxe.