API Anahtarlarını kontrol eden özel bir politika uyguladığım çalışan bir netcore 2.2 projem var.
Startup.cs dosyasına bu politikayı şu şekilde ekliyorum
//Add Key Policy
services.AddAuthorization(options =>
{
options.AddPolicy("AppKey", policy => policy.Requirements.Add(new AppKeyRequirement()));
});
AppKeyRequirement'ımda AuthorizationHandler'den miras alıyorum ve bunun gibi gelen isteklerdeki anahtarları çözüyorum
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
Bu netcore 3.1'de çalışmaz
Aşağıdaki hatayı alıyorum:
'Microsoft.AspNetCore.Mvc.Filters.AuthorizationFilterContext' yazmak için 'Microsoft.AspNetCore.Routing.RouteEndpoint' türündeki nesne kullanılamıyor.
Çekirdek 3 ve üstü için bunu yapmanın doğru yolu nedir?
Kirk Larkin tarafından işaret edildiği gibi, .net 3.0 ve üstü için doğru yol IHttpContextAccessor'u Auth işleyicisine enjekte etmek ve kullanmaktır.
Bu noktada sorum şu, bunu nasıl enjekte ederim? Bunu startup.cs içinde geçiremiyorum ya da en azından nasıl göremiyorum.
Herhangi bir fikir / ipucu çok takdir edilecektir.