আমি ওয়েবএপিতে অনুমোদনের বিষয়ে বিভিন্ন সংস্থান (বই এবং এসও উত্তর) থেকে পড়ছি।
মনে করুন আমি কাস্টম অ্যাট্রিবিউট যুক্ত করতে চাই যা কেবলমাত্র নির্দিষ্ট ব্যবহারকারীর জন্য অ্যাক্সেসের অনুমতি দেয়:
মামলা 1
আমি ওভাররাইডের এই পদ্ধতিটি দেখেছি 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
এবং তারপরে আমি একই উদাহরণটি দেখতে পেয়েছি তবে কলিং বেসের সাথে sআইএস অনুমোদিত (প্রসঙ্গ):
protected override bool IsAuthorized(HttpActionContext context)
{
if (something1 && something2 && base.IsAuthorized(context)) //??
return true;
return false;
}
আরেকটা জিনিস
এবং অবশেষে ডোমিনিক এখানে বলেছেন :
আপনার অন-অনুমোদনটিকে ওভাররাইড করা উচিত নয় - কারণ আপনি [AllowAnonymous] হ্যান্ডলিং মিস করবেন missing
প্রশ্নাবলি
1) আমার কোন পদ্ধতিগুলি ব্যবহার করা উচিত:
IsAuthorized
বাOnAuthorization
? (বা কখন ব্যবহার করবেন)২) কখন আমি
base.IsAuthorized or
বেস কল করব?3) তারা কি এটি এটি তৈরি করে? যে প্রতিক্রিয়া যদি নাল হয় তবে সবকিছু ঠিক আছে? (কেস # 2)
বিশেষ দ্রষ্টব্য
দয়া করে লক্ষ্য করুন, আমি AuthorizeAttribute
ইতিমধ্যে উত্তরাধিকার সূত্রে প্রাপ্ত কেবলমাত্র (এবং ব্যবহার করতে চাই) ব্যবহার করছিAuthorizationFilterAttribute
কেন?
বুকুয়েজ আমি প্রথম পর্যায়ে এসেছি: http://www.asp.net/web-api/overview/security/authentication-and-authorization-in-aspnet-web-api
যাইহোক আমি অনুমোদনের বৈশিষ্ট্য প্রসারিত করে জিজ্ঞাসা করছি।