承認:エンドポイント ルーティングのリソースは HttpContext

ASP.NET Core 3.1 でエンドポイント ルーティングを使用する場合、承認に使用されるリソースはエンドポイントです。 この方法は、ルート データ (RouteData) へのアクセスを付与するためには不十分でした。 MVC では以前、エンドポイント (Endpoint) とルート データの両方にアクセスできるようにするため、HttpContext リソースが渡されました。 この変更により、承認に渡されるリソースは常に HttpContext になります。

導入されたバージョン

ASP.NET Core 5.0

以前の動作

エンドポイント ルーティングと承認ミドルウェア (AuthorizationMiddleware) または [Authorize] 属性を使用する場合、承認に渡されるリソースは一致するエンドポイントです。

新しい動作

HttpContext がエンドポイント ルーティングから承認に渡されます。

変更理由

HttpContext からエンドポイントにアクセスできます。 一方で、エンドポイントからルート データなどにアクセスする方法はありませんでした。 エンドポイント以外のルーティングからの機能に不足がありました。

アプリでエンドポイント リソースが使用される場合は、HttpContextGetEndpoint を呼び出して、エンドポイントへのアクセスを継続します。

SetSwitch を使用して以前の動作に戻すことができます。 次に例を示します。

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

影響を受ける API

なし