Partilhar via


Autorização: O recurso no roteamento de endpoints é 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. Esta 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 o HttpContext.

Versão introduzida

ASP.NET Núcleo 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 final encaminha HttpContext para a autorização.

Motivo da mudança

Você pode chegar ao ponto de extremidade a partir 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 não terminal.

Se a sua aplicação usa o recurso de ponto de acesso, utilize GetEndpoint no HttpContext para continuar a aceder ao ponto de acesso.

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

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

APIs afetadas

Nenhum