2013-03-25 5 views
7

उपयोगकर्ता को प्रमाणीकृत करने के बाद मुझे किस HTTP स्थिति कोड का जवाब देना चाहिए और फिर पता लगाना है कि उन्होंने पंजीकरण के बाद अपना खाता सक्रिय नहीं किया है?असंबद्ध खाते के लिए HTTP स्थिति कोड क्या है?

उत्तर

7

401 का अर्थ है कि उपयोगकर्ता अज्ञात है (बिल्कुल प्रमाणित नहीं है या गलत तरीके से प्रमाणित नहीं है, उदाहरण के लिए प्रमाण-पत्र अमान्य हैं)।
403 का अर्थ है कि उपयोगकर्ता ज्ञात है लेकिन अधिकृत नहीं है (यानी उचित भूमिका/समूह नहीं है)।

तुम भी "निष्क्रिय" और/या उचित भूमिका की कमी की तरह एक विशिष्ट भूमिका होने एक उपयोगकर्ता के रूप में एक पंजीकृत लेकिन निष्क्रिय खाते की व्याख्या कर सकता है। 403 आपके विशेष मामले में अधिक उपयुक्त है।

1

आप समझे कि एक खाता है कि सक्रिय नहीं किया गया अधिकृत नहीं किया जाना चाहिए, तो प्रतिक्रिया निश्चित रूप से एक 401 Unauthorized स्थिति कोड होना चाहिए।

मुझे लगता है कि 403 Forbidden भी उपयुक्त होगा, हां। हालांकि आपके मामले में मुझे लगता है कि 401 अनधिकृत अधिक उपयुक्त है।

This answer काफी अच्छी तरह से दो को सारांशित, 401 अनधिकृत के लिए इस उद्धृत: अनुरोध पहले ही प्राधिकरण प्रमाणिकता शामिल

है, तो 401 प्रतिक्रिया इंगित करता है कि प्राधिकरण उन क्रेडेंशियल के लिए मना कर दिया गया है।

यह निश्चित रूप से लागू होता है, क्योंकि आपके मामले से पता चलता है कि उन्होंने प्रमाण-पत्र प्रदान किए हैं लेकिन वे प्रमाण-पत्र मान्य नहीं हैं क्योंकि खाता सक्रिय नहीं किया गया है (जिसे आप अनधिकृत मानते हैं)।

+2

आपका पिछला उत्तर नहीं होगा, 403 निषिद्ध, अधिक उपयुक्त हो? चूंकि 401 मानता है कि उपयोगकर्ता ने गलत प्रमाण-पत्र दर्ज किए हैं ... जो उन्होंने नहीं किया है। अनुलेख आपको एक अच्छी वेबसाइट –

+0

@ जॉननाथन शायद मिल गया है। हालांकि, मुझे नहीं लगता कि 401 मानता है कि दिए गए प्रमाण-पत्र आवश्यक हैं _wrong_, बस _unauthorized_। –

1

@Josh डेवनपोर्ट: आप एक दूसरे की जगह में प्राधिकरण और प्रमाणीकरण वर्णित: प्रमाणीकरण, क्रेडेंशियल चेकिंग है प्राधिकरण भूमिका/समूह काम है।

दूसरी ओर, के रूप में आप अपने आप को टिप्पणी में कहा गया है, 401 हो जाती है दोनों एक ही बार में प्रमाणीकरण और प्राधिकरण विफल रहा है। उपयोगकर्ता को 401 प्राप्त करने में दोनों को विफल करने की आवश्यकता है। 403 उन मामलों में उपयोग किया जाता है जहां डेटा पूरी तरह से निषिद्ध है और प्रमाणीकरण निष्पादित/आवश्यक नहीं है।

एक समानता के रूप में: 401 = चेकपॉइंट जहां प्रमाण-पत्र चेक किए जाते हैं। 403 = स्टॉप साइन, दर्ज नहीं कर सकता।

ओपी के सवाल का जवाब देने के लिए: 401 तार्किक unactivated खाते के लिए स्थिति कोड है, लेकिन क्योंकि यह आवश्यकता HTTP-प्रमाणीकरण कार्यान्वयन, 403, यह करने के बजाय इस्तेमाल किया जा सकता है अगर आप का प्रमाणीकरण कर रहे हैं और अन्य तरीकों से प्राधिकृत करने। मैं व्यक्तिगत रूप से अभी भी 401 तक रहूंगा, क्योंकि मानक आवश्यक रूप से सभी वास्तविक जीवन स्थितियों को कवर नहीं करते हैं। आजकल लगभग कोई भी प्रमाणीकरण उद्देश्यों के लिए HTTP-Auth का उपयोग नहीं करता है।

संबंधित मुद्दे