मेरे पास एक काम करने वाली नेटकोर 2.2 परियोजना है जहां मैंने एक कस्टम नीति लागू की है जो एपीआई कीज़ के लिए जांच करती है।
Startup.cs में मैं इस नीति को इस तरह जोड़ रहा हूं
//Add Key Policy
services.AddAuthorization(options =>
{
options.AddPolicy("AppKey", policy => policy.Requirements.Add(new AppKeyRequirement()));
});
मेरे AppKeyRequirement में मुझे प्राधिकरणहैंडलर से विरासत में मिला है और इस तरह आने वाले अनुरोधों में कुंजियों को हल करता है
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.Rout.RouteEndpoint' टाइप की ऑब्जेक्ट को 'Microsoft.AspNetCore.Mvc.Filters.AuthorizationFilterContext' टाइप करने में असमर्थ।
कोर 3 और इसके बाद के संस्करण में ऐसा करने का सही तरीका क्या है?
जैसा कि कर्क लार्किन ने बताया है, .net 3.0 और इसके बाद के संस्करण में सही तरीका है IHttpContextAccessor को प्रामाणिक हैंडलर में इंजेक्ट करना और उसका उपयोग करना।
इस बिंदु पर मेरा सवाल यह है कि मैं इसे कैसे इंजेक्ट करूं? मैं इसे स्टार्टअप में पास नहीं कर सकता। या कम से कम मैं यह नहीं देख रहा हूं कि कैसे।
किसी भी विचार / संकेत बहुत सराहना की जाएगी।