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.

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