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