मैं WebApi में प्राधिकरण के बारे में कई संसाधनों (पुस्तकों और SO उत्तरों) से पढ़ रहा हूं।
मान लीजिए मैं कस्टम विशेषता जोड़ना चाहता हूं जो केवल कुछ उपयोगकर्ताओं के लिए उपयोग की अनुमति देता है:
मामला एक
मैंने ओवरराइडिंग के इस दृष्टिकोण को देखा है OnAuthorization
, जो कुछ गलत होने पर प्रतिक्रिया सेट करता है
public class AllowOnlyCertainUsers : AuthorizeAttribute
{
public override void OnAuthorization(HttpActionContext actionContext)
{
if ( /*check if user OK or not*/)
{
actionContext.Response = new HttpResponseMessage(HttpStatusCode.Unauthorized);
}
}
}
केस # 2
लेकिन मैंने इस तरह के उदाहरण को भी देखा है जो ओवरराइडिंग भी है OnAuthorization
लेकिन कॉलिंग के साथ base
:
public override void OnAuthorization(HttpActionContext actionContext)
{
base.OnAuthorization(actionContext);
// If not authorized at all, don't bother
if (actionContext.Response == null)
{
//...
}
}
फिर, आप जांचें कि
HttpActionContext.Response
क्या सेट है या नहीं। यदि यह सेट नहीं है, तो इसका मतलब है कि अनुरोध अधिकृत है और उपयोगकर्ता ठीक है
केस # 3
लेकिन मैंने ओवरराइडिंग के इस दृष्टिकोण को भी देखा है IsAuthorized
:
public class AllowOnlyCertainUsers : AuthorizeAttribute
{
protected override bool IsAuthorized(HttpActionContext context)
{
if ( /*check if user OK or not*/)
{
return true;// or false
}
}
}
केस # 4
और फिर मैंने एक समान उदाहरण देखा, लेकिन कॉलिंग बेस के साथ। सामान्यीकृत (संदर्भ):
protected override bool IsAuthorized(HttpActionContext context)
{
if (something1 && something2 && base.IsAuthorized(context)) //??
return true;
return false;
}
एक और चीज़
और अंत में डोमिनिक ने यहां कहा :
आपको OnAuthorization को ओवरराइड नहीं करना चाहिए - क्योंकि आप [AllowAnonymous] हैंडलिंग को मिस कर रहे होंगे।
प्रशन
1) मुझे किन विधियों का उपयोग करना चाहिए:
IsAuthorized
याOnAuthorization
? (या कब कौन सा उपयोग करें)2) मुझे आधार कब कहा जाना चाहिए
base.IsAuthorized or
।3) क्या उन्होंने इसे बनाया है? कि अगर प्रतिक्रिया शून्य है तो सब कुछ ठीक है? (मामला # 2)
एनबी
कृपया ध्यान दें, मैं उपयोग कर रहा हूं (और उपयोग करना चाहता हूं) केवल AuthorizeAttribute
जो पहले से ही विरासत में मिला है AuthorizationFilterAttribute
क्यों ?
ब्यूसेज़ मैं पहले चरण में हूँ: http://www.asp.net/web-api/overview/security/authentication-and-authorization-in-aspnet-web-api
वैसे भी Im अधिकृत विशेषता के माध्यम से पूछ रहा हूँ।