Авторизация: ресурс в маршрутизации конечных точек — HttpContext

При маршрутизации конечных точек в ASP.NET Core 3.1 в качестве ресурса для авторизации используется конечная точка. Такой подход не обеспечивал доступ к данным маршрута (RouteData). Ранее в MVC передавался ресурс HttpContext, который обеспечивал доступ одновременно к конечной точке (Endpoint) и данным маршрута. Это изменение гарантирует, что в качестве ресурса для авторизации всегда будет передаваться HttpContext.

Представленные версии

ASP.NET Core 5.0

Старое поведение

При использовании маршрутизации конечной точки и ПО промежуточного слоя авторизации (AuthorizationMiddleware) или атрибутов [Authorize] в качестве ресурса для авторизации передается соответствующая конечная точка.

Новое поведение

При маршрутизации конечной точки для авторизации передается HttpContext.

Причина изменения

Существует возможность перейти к конечной точке из HttpContext. Тем не менее, из конечной точки было невозможно получить информацию, например данные маршрута. Таким образом, утрачивались функциональные возможности из-за маршрутизации без конечной точки.

Если в вашем приложении используется ресурс конечной точки вызовите GetEndpoint для HttpContext, чтобы сохранить доступ к конечной точке.

Вы можете восстановить поведение предыдущих версий с использованием SetSwitch. Например:

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

Затронутые API

Нет