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.
Zalecana akcja
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