授權:端點路由的資源為 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
無