Авторизация: ресурс в маршрутизации конечных точек — 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
Нет