1
netcore api 3.1でAuthorizationFilterContextを読み取る
APIキーをチェックするカスタムポリシーを実装したnetcore 2.2プロジェクトが機能しています。 startup.csに私はこのようにこのポリシーを追加しています //Add Key Policy services.AddAuthorization(options => { options.AddPolicy("AppKey", policy => policy.Requirements.Add(new AppKeyRequirement())); }); 私のAppKeyRequirementでは、AuthorizationHandlerから継承し、次のように着信リクエストのキーを解決します protected override Task HandleRequirementAsync(AuthorizationHandlerContext authContext, AppKeyRequirement requirement) { var authorizationFilterContext = (AuthorizationFilterContext)authContext.Resource; var query = authorizationFilterContext.HttpContext.Request.Query; if (query.ContainsKey("key") && query.ContainsKey("app")) { // Do stuff これはnetcore 3.1では機能しません 次のエラーが発生します。 タイプ「Microsoft.AspNetCore.Routing.RouteEndpoint」のオブジェクトをタイプ「Microsoft.AspNetCore.Mvc.Filters.AuthorizationFilterContext」にキャストできません。 コア3以上でこれを行う正しい方法は何ですか? Kirk Larkinが指摘したように、.net 3.0以降での正しい方法は、IHttpContextAccessorをAuthハンドラーに挿入して使用することです。 この時点での私の質問は、これをどのように注入するのですか?これをstartup.csで渡すことはできません。少なくとも方法はわかりません。 どんなアイデア/ヒントも大歓迎です。