次の方法で共有


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

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

導入されたバージョン

ASP.NET Core 5.0

以前の動作

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

新しい動作

エンドポイント ルーティングは、 HttpContext を承認に渡します。

変更の理由

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

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

SetSwitchを使用して、以前の動作に戻すことができます。 例えば次が挙げられます。

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

影響を受ける API

無し