आपके पहले सवाल के जवाब में, यह जांचने के साथ सबसे बड़ा मुद्दा कि किसी उपयोगकर्ता की एक विशिष्ट अनुमति के बजाय एक भूमिका है, वह यह है कि अनुमतियों को कई भूमिकाओं के लिए रखा जा सकता है। इसके उदाहरण के रूप में, एक डेवलपर के पास कंपनी के इंट्रानेट पर डेवलपर पोर्टल को देखने के लिए एक्सेस हो सकता है, जो संभवतः उसके प्रबंधक द्वारा रखी गई अनुमति भी है। यदि कोई उपयोगकर्ता तब डेवलपर पोर्टल तक पहुंचने का प्रयास कर रहा है, तो आपके पास एक चेक होगा:
if(SecurityUtils.hasRole(developer)) {
// Grant them access to a feature
} else if(SecurityUtils.hasRole(manager)) {
// Grant them access to a feature
} else if...
( switch
अपनी पसंद की भाषा में एक बयान बेहतर होगा, लेकिन अभी भी विशेष रूप से साफ नहीं है)
अधिक सामान्य या व्यापक रूप से एक अनुमति है, यह सुनिश्चित करने के लिए कि आपको किसी दिए गए सिस्टम का उपयोग करने में सक्षम होने के लिए अधिक उपयोगकर्ता भूमिकाओं की आवश्यकता होगी। यह इस मुद्दे को भी आगे ले जाएगा कि हर बार जब आप किसी भूमिका के लिए अनुमति संशोधित करते हैं, तो आपको इसे प्रतिबिंबित करने के लिए चेक को संशोधित करना होगा। एक बड़ी प्रणाली में यह बहुत जल्दी बहुत ही कमजोर हो जाता है।
यदि आप केवल यह देखते हैं कि उपयोगकर्ता के पास अनुमति है जो उन्हें उदाहरण के लिए डेवलपर पोर्टल तक पहुंचने की अनुमति देता है, तो इससे कोई फर्क नहीं पड़ता कि वे क्या भूमिका रखते हैं, उन्हें एक्सेस दी जाएगी।
आपके दूसरे प्रश्न का उत्तर देने के लिए, आपके पास भूमिकाएं हैं, क्योंकि वे अनुमतियों के "पैकेज" को संशोधित करने और वितरित करने में आसान हैं। यदि आपके पास एक ऐसी प्रणाली है जिसमें सैकड़ों भूमिकाएं और हजारों अनुमतियां हैं, तो एक नया उपयोगकर्ता (उदाहरण के लिए एक नया मानव संसाधन प्रबंधक) जोड़ने से आपको गुजरने और हर एक अनुमति देने की आवश्यकता होगी जो अन्य मानव संसाधन प्रबंधक रखते हैं। न केवल यह थकाऊ होगा, लेकिन अगर इसे मैन्युअल रूप से किया जाता है, तो गलतियों का खतरा होता है। इसकी तुलना केवल "एचआर प्रबंधक" भूमिका को एक उपयोगकर्ता के प्रोफाइल में जोड़ने के लिए करें, जो उन्हें उस भूमिका के साथ हर दूसरे उपयोगकर्ता के समान एक्सेस प्रदान करेगा।
आप तर्क दे सकते हैं कि आप किसी मौजूदा उपयोगकर्ता (यदि आपके सिस्टम ने इस का समर्थन किया है) को क्लोन कर सकते हैं, लेकिन यह उपयोगकर्ता को उस समय के लिए सही अनुमति प्रदान करता है, जो भविष्य में सभी उपयोगकर्ताओं के लिए एक अनुमति जोड़ने या निकालने का प्रयास हो सकता है। मुश्किल। इसके लिए एक उदाहरण परिदृश्य यह है कि शायद पिछले समय में एचआर कर्मचारी पेरोल के प्रभारी भी थे, लेकिन बाद में कंपनी को विशेष रूप से पेरोल को संभालने के लिए कर्मचारियों को काम पर रखने के लिए पर्याप्त वेतन मिलता है। इसका मतलब है कि एचआर को अब पेरोल सिस्टम तक पहुंचने की आवश्यकता नहीं है, ताकि अनुमति को हटाया जा सके। यदि आपके पास मानव संसाधन के 10 अलग-अलग सदस्य हैं, तो आपको मैन्युअल रूप से जाने की आवश्यकता होगी और सुनिश्चित करें कि आप सही अनुमति को हटा दें जो उपयोगकर्ता त्रुटि की संभावना का परिचय देती है। इस के साथ अन्य मुद्दा यह है कि यह बस पैमाने पर नहीं है; जब आप किसी दिए गए भूमिका में अधिक से अधिक उपयोगकर्ताओं को प्राप्त करते हैं तो यह एक भूमिका के संशोधन को और अधिक कठिन बना देता है। भूमिकाओं का उपयोग करने के लिए इसकी तुलना करें, जहां आपको केवल अनुमति को हटाने के लिए ओवररचिंग भूमिका को संशोधित करना होगा, जो उस भूमिका को धारण करने वाले प्रत्येक उपयोगकर्ता द्वारा परिलक्षित होगा।