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.
Empfohlene Aktion
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