Dela via


Auktorisering: Resursen i slutpunktsroutning är HttpContext

När du använder slutpunktsroutning i ASP.NET Core 3.1 är den resurs som används för auktorisering slutpunkten. Den här metoden var otillräcklig för att få åtkomst till routningsdata (RouteData). Tidigare i MVC skickades en HttpContext resurs in, vilket ger åtkomst till både slutpunkten (Endpoint) och routningsdata. Den här ändringen säkerställer att resursen som skickas till auktoriseringen alltid HttpContextär .

Version introducerad

ASP.NET Core 5.0

Gammalt beteende

När du använder slutpunktsroutning och attributen auktorisering mellanprogram (AuthorizationMiddleware) eller [Auktorisera] är den resurs som skickas till auktoriseringen den matchande slutpunkten.

Nytt beteende

Slutpunktsroutning skickar HttpContext till auktorisering.

Orsak till ändringen

Du kan komma till slutpunkten från HttpContext. Det gick dock inte att komma från slutpunkten till saker som routningsdata. Det uppstod en funktionsförlust från icke-slutpunktsroutning.

Om din app använder slutpunktsresursen anropar GetEndpoint du HttpContext för att fortsätta att komma åt slutpunkten.

Du kan återgå till det gamla beteendet med SetSwitch. Till exempel:

AppContext.SetSwitch(
    "Microsoft.AspNetCore.Authorization.SuppressUseHttpContextAsAuthorizationResource",
    isEnabled: true);

Berörda API:er

Ingen