5

मैं .NET कोर एमवीसी में प्रमाणीकरण/प्रमाणीकरण सीख रहा हूं।प्राधिकरण नीति का नाम: 'व्यवस्थापक' नहीं मिला

मैं एक नियंत्रक बनाने की कोशिश कर रहा हूं जिसे केवल 'व्यवस्थापक' द्वारा एक्सेस किया जा सकता है, लेकिन निम्न त्रुटि प्राप्त करें।

अनुरोध संसाधित करते समय एक अनचाहे अपवाद हुआ।

अमान्य ऑपरेशन अपवाद: प्राधिकरण नीति का नाम: 'व्यवस्थापक' नहीं मिला।

मेरा कोड यहां है। मुझे क्या करना चाहिए?

[HttpGet("~/Test")] 
[Authorize("Admin")] 
public async Task<string> MyMethod() 
{ 
    return await Task<string>.Run(() => "Hello Admin"); 
} 

उत्तर

9

आप Startup.cs में मिलान नीति को परिभाषित कर सकते

services.AddAuthorization(options => 
    { 

     options.AddPolicy("Admin", 
      authBuilder => 
      { 
       authBuilder.RequireRole("Administrators"); 
      }); 

}); 

authBuilder उस पर अन्य तरीकों, आप का दावा है या विशिष्ट उपयोगकर्ता नाम या कस्टम नियमों नीति आधारित प्राधिकरण का उपयोग कर की आवश्यकता होती है और नियंत्रित कर सकते हैं है स्टार्टअप https://docs.asp.net/en/latest/security/authorization/policies.html

+0

नाइस में केंद्रीय स्थान से नियम। इसे "सही" उत्तर के रूप में चिह्नित करने के लिए जा रहे हैं क्योंकि यह नियंत्रकों में neater कोड की ओर जाता है। – HockeyJ

2

प्रलेखन here के साथ लाइन में, आपने प्राधिकरण विशेषता गलत तरीके से नहीं जोड़ा है। ऐसा करने का यह सही तरीका है।

[HttpGet("~/Test")] 
[Authorize(Roles ="Admin")] 
public async Task<string> MyMethod() 
{ 
    return await Task<string>.Run(() => "Hello Admin"); 
} 
संबंधित मुद्दे