2012-09-09 16 views
5

यदि एप्लिकेशन को पता चला कि उपयोगकर्ता को कुछ करने के लिए प्रमाणित/अधिकृत नहीं है, तो क्या यह एक अप्रत्याशित चीज़ है?अपवादों का उपयोग कर प्रमाणीकरण/प्राधिकरण त्रुटियों को संभालने के लिए यह एक अच्छा अभ्यास है?

try { 
    if (notAuth()) 
     throw new UnAuthException(); 
} catch (UnAuthException e) { 
    Log . error(e); 
    return false; 
} 

यह उम्मीद है कि अगर मामले, तो क्यों देखते हैं तो कई व्यवस्थाएं अपने स्वयं के UnAuthException अगर विफल रही प्रमाणीकरण है अपवाद नहीं है?

उत्तर

4

दायरे पर निर्भर करता है।

व्यापार तर्क परत में "उपयोगकर्ता अधिकृत नहीं है/प्रमाणीकृत" स्थिति असाधारण है, और रनटाइम अपवाद (उदाहरण के लिए जावा कोड) करने के लिए नेतृत्व करना चाहिए:

public String salutation(User user) { 
    // may lead to a runtime exception if user is not authorized 
    return String.format("Hello, %s!", user.getName()); 
} 

User (का कार्यान्वयन यह एक अंतरफलक है , ज़ाहिर है) या तो getName() में NonAuthenticatedException को उपयोगकर्ता का नाम वापस कर देगा या फेंक देगा। में

if (!user.isAuthenticated()) { 
    httpResponse.addHeader("WWW-Authenticate", "Basic realm=\"secure content\""); 
} 
+0

धन्यवाद, ये तर्क है कि है, लेकिन:

अभिगम नियंत्रण में परत उपयोगकर्ता प्राधिकरण/प्रमाणीकरण स्थिति किसी अन्य सामान्य स्थितियों के रूप में संसाधित किया जाता है, और असाधारण स्थिति है, जैसे के रूप में नहीं देखा जाना चाहिए पहला उदाहरण बिजनेस लॉजिक, अपवाद कहां होना चाहिए? क्या आप अपवाद को फेंकने वाले कोड और इसे संभालने वाले कोड को शामिल करके उदाहरण का विस्तार कर सकते हैं, क्षमा करें, लेकिन मुझे थोड़ा सा उलझन में है – Abdullah

+1

मैंने अपना जवाब अपडेट कर दिया है। 'उपयोगकर्ता' एक इंटरफ़ेस है जिसे या तो प्रमाणीकृत उपयोगकर्ता के साथ कार्यान्वित किया जाएगा जो 'getName()' या अज्ञात उपयोगकर्ता से अपना नाम लौटाता है जो अपवाद फेंकता है। – yegor256

+0

यह स्पष्ट है, धन्यवाद। – Abdullah

1

हाँ, यह अपवाद के माध्यम से प्रमाणीकरण \ प्राधिकरण को संभालने के लिए एक अच्छा अभ्यास है क्योंकि:

1) एक अपवाद विषम स्थिति यह है कि प्रणाली पसंद नहीं करता है और इसलिए अपवाद हैंडलिंग के माध्यम से हम उस स्थिति के लिए प्रतिक्रिया कर रहे हैं । प्रमाणीकरण और प्रमाणीकरण अपवाद मूल रूप से सुरक्षा उल्लंघनों i.e सिस्टम विसंगतियां हैं, और उल्लंघनों का जवाब देना एक अच्छा अभ्यास है। अपवाद हैंडलिंग फ्रेमवर्क उल्लंघनों \ सिस्टम विसंगतियों की रिपोर्ट करने के लिए एक लोकप्रिय तंत्र है और इसलिए हम इस ढांचे का उपयोग ऐसी परिस्थितियों पर प्रतिक्रिया करने के लिए करते हैं।

यही कारण है कि सभी लोकप्रिय ढांचे (.NET सहित) में ऑथ है। अपवाद वर्ग त्रुटियों को समाहित करने के लिए।

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

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