ASP.NET Core 3.1 でエンドポイント ルーティングを使用する場合、承認に使用されるリソースはエンドポイントです。 この方法では、ルート データ (RouteData) にアクセスするには不十分でした。 以前の MVC では、 HttpContext リソースが渡されました。これにより、エンドポイント (Endpoint) とルート データの両方にアクセスできます。 この変更により、承認に渡されるリソースが常に HttpContextになります。
導入されたバージョン
ASP.NET Core 5.0
以前の動作
エンドポイント ルーティングと承認ミドルウェア (AuthorizationMiddleware) 属性または [Authorize] 属性を使用する場合、承認に渡されるリソースは一致するエンドポイントです。
新しい動作
エンドポイント ルーティングは、 HttpContext を承認に渡します。
変更の理由
HttpContextからエンドポイントにアクセスできます。 ただし、エンドポイントからルート データなどにアクセスする方法はありませんでした。 エンドポイント以外のルーティングの機能が失われました。
推奨されるアクション
アプリでエンドポイント リソースを使用している場合は、GetEndpointでHttpContextを呼び出して、エンドポイントへのアクセスを続行します。
SetSwitchを使用して、以前の動作に戻すことができます。 例えば次が挙げられます。
AppContext.SetSwitch(
"Microsoft.AspNetCore.Authorization.SuppressUseHttpContextAsAuthorizationResource",
isEnabled: true);
影響を受ける API
無し
.NET