Autorisierung: Die Ressource im Endpunktrouting ist HttpContext

Bei der Verwendung des Endpunktroutings in ASP.NET Core 3.1 ist die für die Autorisierung verwendete Ressource der Endpunkt. Dieser Ansatz war nicht ausreichend, um Zugriff auf die Routendaten (RouteData) zu erhalten. Bisher wurde in MVC eine HttpContext-Ressource übergeben, die sowohl den Zugriff auf den Endpunkt (Endpoint) als auch auf die Routendaten ermöglicht. Diese Änderung sorgt dafür, dass die für die Autorisierung übergebene Ressource immer HttpContext ist.

Eingeführt in Version

ASP.NET Core 5.0

Altes Verhalten

Wenn Endpunktrouting und die Autorisierungsmiddleware (AuthorizationMiddleware) oder [Authorize]-Attribute verwendet werden, ist die für die Autorisierung übergebene Ressource der übereinstimmende Endpunkt.

Neues Verhalten

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

Grund für die Änderung

Der Endpunkt kann über HttpContext erreicht werden. Es bestand jedoch keine Möglichkeit, vom Endpunkt beispielsweise zu den Routendaten zu gelangen. Beim Nicht-Endpunkt-Routing führte das also zu einer eingeschränkten Funktionalität.

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

Sie können das alte Verhalten mit SetSwitch wiederherstellen. Zum Beispiel:

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

Betroffene APIs

Keine