Autorizzazione: La risorsa nel routing degli endpoint è HttpContext
Quando si usa il routing degli endpoint in ASP.NET Core 3.1, la risorsa usata per l'autorizzazione è l'endpoint. Questo approccio non è sufficiente per ottenere l'accesso ai dati del percorso (RouteData). In precedenza in MVC è stata passata una risorsa HttpContext, che consente l'accesso sia all'endpoint (Endpoint) che ai dati di percorso. Questa modifica garantisce che la risorsa passata all'autorizzazione sia sempre la HttpContext
.
Versione introdotta
ASP.NET Core 5.0
Comportamento precedente
Quando si usano il routing degli endpoint e gli attributi del middleware di autorizzazione (AuthorizationMiddleware) o [Authorize], la risorsa passata all'autorizzazione è l'endpoint corrispondente.
Nuovo comportamento
Il routing degli endpoint passa il HttpContext
all'autorizzazione.
Motivo della modifica
È possibile accedere all'endpoint da HttpContext
. Tuttavia, non è stato possibile passare dall'endpoint a elementi come i dati della route. C’è stato un calo nella funzionalità dal routing non dell'endpoint.
Azione consigliata
Se l'app usa la risorsa endpoint, chiamare GetEndpoint sul HttpContext
per continuare ad accedere all'endpoint.
È possibile ripristinare il comportamento precedente con SetSwitch. Ad esempio:
AppContext.SetSwitch(
"Microsoft.AspNetCore.Authorization.SuppressUseHttpContextAsAuthorizationResource",
isEnabled: true);
API interessate
Nessuno