Freigeben über


Autorisierung: Ressource im Endpunktrouting ist HttpContext

Bei Verwendung des Endpunktroutings in ASP.NET Core 3.1 ist die für die Autorisierung verwendete Ressource der Endpunkt. Dieser Ansatz reichte nicht aus, um Zugriff auf die Routendaten zu erhalten (RouteData). Zuvor in MVC wurde eine HttpContext Ressource übergeben, die den Zugriff auf den Endpunkt (Endpoint) und die Routendaten ermöglicht. Diese Änderung gewährleistet, dass die Ressource, die an die Autorisierung übergeben wird, immer die HttpContext ist.

Eingeführte Version

ASP.NET Core 5.0

Altes Verhalten

Bei Verwendung des Endpunktroutings und der Autorisierungs-Middleware (AuthorizationMiddleware) oder [Authorize] -Attributen ist die an die Autorisierung übergebene Ressource der entsprechende Endpunkt.

Neues Verhalten

Beim Endpunktrouting wird HttpContext für die Autorisierung übergeben.

Grund für Änderung

Sie können vom HttpContext aus den Endpunkt erreichen. Es gab jedoch keine Möglichkeit, von dem Endpunkt zu Dingen wie den Routendaten zu gelangen. Es gab einen Verlust der Funktionalität durch das Routing von Nicht-Endpunkten.

Wenn Ihre App die Endpunktressource verwendet, rufen Sie GetEndpoint in HttpContext auf, um das Zugreifen auf den Endpunkt fortzusetzen.

Sie können auf das alte Verhalten zurücksetzen mit SetSwitch. Beispiel:

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

Betroffene APIs

Nichts