授权:终结点路由中的资源为 HttpContext
在 ASP.NET Core 3.1 中使用终结点路由时,用于授权的资源是终结点。 此方法不足以获取对路由数据 (RouteData) 的访问权限。 以前在 MVC 中,已传入 HttpContext 资源,这允许访问终结点 (Endpoint) 和路由数据。 此更改可确保传递给授权的资源始终是 HttpContext
。
引入的版本
ASP.NET Core 5.0
旧行为
使用终结点路由和授权中间件 (AuthorizationMiddleware) 或 [Authorize] 属性时,传递给授权的资源是匹配的终结点。
新行为
终结点路由将 HttpContext
传递给授权。
更改原因
可以从 HttpContext
访问终结点。 但是,无法从终结点访问路由数据等内容。 非终结点路由导致了功能丢失。
建议操作
如果应用使用终结点资源,请对 HttpContext
调用 GetEndpoint 以继续访问终结点。
你可以通过 SetSwitch 还原到以前的行为。 例如:
AppContext.SetSwitch(
"Microsoft.AspNetCore.Authorization.SuppressUseHttpContextAsAuthorizationResource",
isEnabled: true);
受影响的 API
无