Share via


권한 부여: 엔드포인트 라우팅의 리소스가 HttpContext임

ASP.NET Core 3.1에서 엔드포인트 라우팅을 사용하는 경우 권한 부여에 사용되는 리소스는 엔드포인트입니다. 이 방법만으로 경로 데이터(RouteData)에 대한 액세스 권한을 얻을 수는 없었습니다. 이전에는 MVC에서 엔드포인트(Endpoint) 및 경로 데이터 둘 다에 대한 액세스를 허용하는 HttpContext 리소스가 전달되었습니다. 이렇게 변경하면 권한 부여에 전달되는 리소스가 항상 HttpContext입니다.

도입된 버전

ASP.NET Core 5.0

이전 동작

엔드포인트 라우팅과 권한 부여 미들웨어(AuthorizationMiddleware) 또는 [Authorize] 특성을 사용하는 경우 권한 부여에 전달되는 리소스는 일치하는 엔드포인트입니다.

새 동작

엔드포인트 라우팅이 권한 부여에 HttpContext를 전달합니다.

변경 이유

HttpContext에서 엔드포인트에 액세스할 수 있습니다. 그러나 엔드포인트에서 경로 데이터 등에 액세스할 수 있는 방법이 없었습니다. 비엔드포인트 라우팅의 기능이 손실되었습니다.

앱에서 엔드포인트 리소스를 사용하는 경우 HttpContext에 대해 GetEndpoint를 호출하여 엔드포인트에 계속 액세스합니다.

SetSwitch를 사용하여 이전 동작으로 되돌릴 수 있습니다. 예시:

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

영향을 받는 API

없음