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에서 이것을 전달할 수 없거나 적어도 어떻게 보지 못합니다.
모든 아이디어 / 힌트는 대단히 감사하겠습니다.