ASP.NET MVC में, आप AuthorizeAttribute
के साथ एक नियंत्रक विधि को चिह्नित कर सकते हैं, इस तरह:प्रमाणीकरण और प्रमाणीकरण विफलताओं के लिए AuthorizeAttribute लॉगिन पृष्ठ पर रीडायरेक्ट क्यों करता है?
[Authorize(Roles = "CanDeleteTags")]
public void Delete(string tagName)
{
// ...
}
इसका मतलब यह है कि, अगर वर्तमान में लॉग-इन उपयोगकर्ता "CanDeleteTags" की भूमिका में, नियंत्रक नहीं है विधि कभी नहीं बुलाया जाएगा।
दुर्भाग्यवश, विफलताओं के लिए, AuthorizeAttribute
HttpUnauthorizedResult
देता है, जो हमेशा HTTP स्थिति कोड 401 देता है। इससे लॉगिन पृष्ठ पर पुनर्निर्देशन होता है।
यदि उपयोगकर्ता लॉग इन नहीं है, तो यह सही मायने में समझ में आता है। हालांकि, यदि उपयोगकर्ता पहले से ही लॉग इन है, लेकिन आवश्यक भूमिका में नहीं है, तो यह उन्हें वापस लॉगिन पृष्ठ पर भेजने में भ्रमित है।
ऐसा लगता है कि AuthorizeAttribute
प्रमाणीकरण और प्राधिकरण इंगित।
यह ASP.NET MVC में एक निरीक्षण का एक सा की तरह लगता है, या मैं कुछ याद आ रही है?
मैं एक DemandRoleAttribute
है कि दो अलग करती अप पकाने के लिए किया है। जब उपयोगकर्ता प्रमाणीकृत नहीं होता है, तो यह लॉगिन पृष्ठ पर भेजकर HTTP 401 देता है। जब उपयोगकर्ता लॉग इन होता है, लेकिन आवश्यक भूमिका में नहीं है, तो यह इसके बजाय NotAuthorizedResult
बनाता है। वर्तमान में यह एक त्रुटि पृष्ठ पर रीडायरेक्ट करता है।
निश्चित रूप से मुझे यह करने की ज़रूरत नहीं है?
बहुत बढ़िया सवाल और मैं मानता हूँ, यह एक HTTP अधिकृत प्राधिकृत स्थिति फेंकना चाहिए। –
मुझे आपका समाधान पसंद है, रोजर। भले ही आप नहीं करते हैं। –
मेरे लॉगिन पेज में उपयोगकर्ता को रीटर्न यूआरएल को रीडायरेक्ट करने के लिए एक चेक है, यदि वह पहले से ही ऑटोनेटेड है। तो मैं 302 रीडायरेक्ट्स का अनंत लूप बनाने में कामयाब रहा: डी woot। –