Share via


Autorização: o recurso no roteamento de ponto de extremidade é o HttpContext

Ao usar o roteamento de ponto de extremidade no ASP.NET Core 3.1, o recurso usado para autorização é o ponto de extremidade. Essa abordagem foi insuficiente para obter acesso aos dados de rota (RouteData). Anteriormente no MVC, um recurso HttpContext era passado, o que permite o acesso ao ponto de extremidade (Endpoint) e aos dados de rota. Essa alteração garante que o recurso passado para autorização seja sempre HttpContext.

Versão introduzida

ASP.NET Core 5.0

Comportamento antigo

Ao usar o roteamento de ponto de extremidade e os atributos de middleware de autorização (AuthorizationMiddleware) ou [Autorizar], o recurso passado para autorização é o ponto de extremidade correspondente.

Novo comportamento

O roteamento de ponto de extremidade passa HttpContext para autorização.

Motivo da alteração

Você pode chegar ao ponto de extremidade por meio de HttpContext. No entanto, não havia como ir do ponto de extremidade para coisas como os dados de rota. Houve uma perda na funcionalidade do roteamento sem ponto de extremidade.

Se o aplicativo usar o recurso de ponto de extremidade, chame GetEndpoint em HttpContext para continuar acessando o ponto de extremidade.

Você pode reverter para o comportamento antigo com SetSwitch. Por exemplo:

AppContext.SetSwitch(
    "Microsoft.AspNetCore.Authorization.SuppressUseHttpContextAsAuthorizationResource",
    isEnabled: true);

APIs afetadas

Nenhum