Autoryzacja: Zasób w routingu punktu końcowego to HttpContext

W przypadku korzystania z routingu punktu końcowego w programie ASP.NET Core 3.1 zasób używany do autoryzacji jest punktem końcowym. Takie podejście nie wystarczało do uzyskania dostępu do danych trasy (RouteData). Wcześniej w usłudze MVC HttpContext przekazano zasób, który umożliwia dostęp do punktu końcowego (Endpoint) i danych trasy. Ta zmiana gwarantuje, że zasób przekazany do autoryzacji jest zawsze HttpContext.

Wprowadzona wersja

ASP.NET Core 5.0

Stare zachowanie

W przypadku korzystania z routingu punktu końcowego i atrybutów oprogramowania pośredniczącego autoryzacji (AuthorizationMiddleware) lub [Autoryzuj] zasób przekazany do autoryzacji jest zgodnym punktem końcowym.

Nowe zachowanie

Routing punktów końcowych przekazuje autoryzację HttpContext .

Przyczyna wprowadzenia zmiany

Możesz uzyskać dostęp do punktu końcowego z poziomu .HttpContext Nie było jednak możliwości pobrania z punktu końcowego do takich elementów jak dane trasy. Wystąpiła utrata funkcjonalności z routingu innego niż punkt końcowy.

Jeśli aplikacja używa zasobu punktu końcowego, wywołaj metodę GetEndpoint , HttpContext aby kontynuować uzyskiwanie dostępu do punktu końcowego.

Możesz przywrócić stare zachowanie za pomocą polecenia SetSwitch. Na przykład:

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

Dotyczy interfejsów API

Brak