Share via


授權:端點路由的資源為 HttpContext

在 ASP.NET Core 3.1 中使用端點路由時,授權使用的資源來自於端點。 這項作法不足以取得路由資料的存取權 (RouteData)。 先前在 MVC 中,系統會傳遞 HttpContext 資源,因此可同時存取端點 (Endpoint) 和路由資料。 這項變更可確保傳遞至授權的資源一律為 HttpContext

導入的版本

ASP.NET Core 5.0

舊的行為

使用端點路由和授權中介軟體 (AuthorizationMiddleware) 或 [授權] 屬性時,傳遞至授權的資源為相符的端點。

新的行為

端點路由會將 HttpContext 傳遞至授權。

變更原因

您可從 HttpContext 到達端點, 但要從端點到達路由資料之類的內容,卻沒有方法。 非端點路由的功能顯然有缺陷。

如果您的應用程式使用端點資源,請在 HttpContext 上呼叫 GetEndpoint 以繼續存取端點。

您可透過 SetSwitch 還原至舊版行為。 例如:

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

受影響的 API