7

यदि उपयोगकर्ता लॉग इन नहीं है और वे [Authorize] पर एक क्रिया का अनुरोध करते हैं, तो प्रतिक्रिया खाता/लॉगऑन कार्रवाई (स्थिति कोड 302 मिली) पर रीडायरेक्ट है।क्या प्राधिकरण एट्रिब्यूट को स्टेटस कोड 403 के साथ प्रतिक्रिया देने का कोई तरीका है रीडायरेक्ट के बजाय निषिद्ध है?

प्रतिक्रिया देने के लिए कोई तरीका है स्थिति कोड 403 इसके बजाय निषिद्ध है?

+0

क्या यह एक आरईएसटी इंटरफ़ेस के लिए है? –

+0

@ क्रिस: नहीं, लेकिन जिज्ञासा से आप क्यों पूछते हैं? मैं एक एचटीपीपोस्ट एक्शन लिख रहा था जिसके लिए मैं लॉगऑन एक्शन पर रीडायरेक्ट करने के बजाय लॉग इन नहीं किया था, तो मैं बस अनुरोध को रोकना चाहता था। –

+4

एफवाईआई - [अधिकृत करें] * करता है * एक 403 निषिद्ध भेजें। फॉर्म प्रमाणीकरण मॉड्यूल 403 प्रतिक्रियाओं को जालता है और उन्हें लॉगिन पृष्ठ पर रीडायरेक्ट में बदल देता है। यदि आप प्रपत्र प्रमाणीकरण का उपयोग नहीं कर रहे हैं, तो आप इसे प्रतिबिंबित करने के लिए Web.config के <प्रमाणीकरण> अनुभाग को बदलना चाहते हैं ताकि फ़ॉर्म प्रमाणीकरण मॉड्यूल इस तर्क को नहीं चला सके। – Levi

उत्तर

10

AuthorizeAttribute से प्राप्त एक एक्शन फ़िल्टर बनाएं।

protected override void HandleUnauthorizedRequest(AuthorizationContext filterContext) 
{ 
    Response.StatusCode = 403; 
    Response.Status = "Forbidden"; 
    Response.StatusDescription = "Forbidden"; 
    Response.End(); 
    Response.Close(); 

} 
1

उपयोगकर्ता तो में लॉग इन नहीं कर रहा है और अधिक उपयुक्त स्थिति कोड 401 है:: अनधिकृत तो इस विधि को ओवरराइड। यह डिफ़ॉल्ट रूप से AuthorizeAttribute देता है।

फॉर्म प्रमाणीकरण मॉड्यूल इस रिटर्न कोड को पकड़ लेगा और इसे रीडायरेक्ट में परिवर्तित करेगा। यदि आप अक्षम (या इसे लोड भी नहीं कर सकते हैं) तो यह कॉलर पर वापस कर दिया जाएगा।