Partager via


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.

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