Autorisation : la ressource de routage du point de terminaison est HttpContext
Lorsque vous utilisez le routage du point de terminaison dans ASP.NET Core 3.1, la ressource utilisée pour l’autorisation est le point de terminaison. Cette approche était insuffisante pour accéder aux données de routes (RouteData). Auparavant dans MVC, une ressource HttpContext était passée, ce qui permettait d’accéder au point de terminaison (Endpoint) et aux données de routes. Ce changement garantit que la ressource passée à l’autorisation est toujours le HttpContext
.
Version introduite
ASP.NET Core 5.0
Ancien comportement
Lors de l’utilisation du routage du point de terminaison et des attributs d’intergiciel d’autorisation (AuthorizationMiddleware) ou les attributs [Authorize], la ressource passée à l’autorisation est le point de terminaison correspondant.
Nouveau comportement
Le routage du point de terminaison passe le HttpContext
à l’autorisation.
Raison du changement
Vous pouvez accéder au point de terminaison à partir du HttpContext
. Toutefois, il n’y avait aucun moyen de passer du point de terminaison à des éléments tels que les données de routes. Il y a eu une perte de fonctionnalités du routage sans point de terminaison.
Action recommandée
Si votre application utilise la ressource du point de terminaison, appelez GetEndpoint sur le HttpContext
pour continuer à accéder au point de terminaison.
Vous pouvez revenir à l’ancien comportement avec SetSwitch. Par exemple :
AppContext.SetSwitch(
"Microsoft.AspNetCore.Authorization.SuppressUseHttpContextAsAuthorizationResource",
isEnabled: true);
API affectées
None