मैं एक एंटरप्राइज़ स्तरीय एप्लिकेशन बना रहा हूं, जहां विभिन्न प्रकार के उपयोगकर्ता हैं। सामान्य उपयोगकर्ता, संगठन व्यवस्थापक, सुपर व्यवस्थापक। प्रत्येक उपयोगकर्ता की अलग-अलग भूमिकाएँ होती हैं।
सामान्य उपयोगकर्ता: कोर एप्लिकेशन की एक्सेस कार्यक्षमता।
संगठन व्यवस्थापक: उपयोगकर्ता बनाएं और उसका संगठन बनाएं।
सुपर उपयोगकर्ता : उपयोगकर्ता और संगठन को स्वीकृति दें
इस वास्तुकला को कैसे डिजाइन किया जाए? क्या भूमिकाओं को अलग-अलग वर्गों के रूप में डिजाइन किया जाना चाहिए। या वंशानुक्रम का उपयोग करके विभिन्न प्रकार के उपयोगकर्ता बनाए जाने हैं ??
2 जवाब
आम तौर पर भूमिकाओं को कक्षाओं के रूप में तैयार नहीं किया जाता है, लेकिन वे केवल तार होते हैं। जब कोई उपयोगकर्ता प्रमाणित करता है, तो इनमें से कई तार उपयोगकर्ता के Security principal
से जुड़े होते हैं।
इन भूमिकाओं को कोड में पूछताछ की जा सकती है, उदा। वेब परत में HttpServletRequest#isUserInRole
के माध्यम से, EJB मॉड्यूल में SessionContext.isCallerInRole
आदि के माध्यम से। ऐसे एनोटेशन भी हैं जो भूमिका पर इस निर्भरता की घोषणा करते हैं।
यदि आप इस प्रकार मौजूदा सुरक्षा और भूमिका संरचना का लाभ उठाना चाहते हैं, तो आपके लिए यह परिभाषित करने के अलावा कि कौन सी भूमिकाएँ हैं और एक लॉगिन मॉड्यूल प्रदान करने के अलावा कुछ भी डिज़ाइन करने के लिए नहीं है, जो उस उपयोगकर्ता के लिए भूमिकाओं का संग्रह प्राप्त कर सकता है जिसने प्रमाणित किया है।
इस आखिरी चीज के लिए, आपको कुछ डिजाइन करना पड़ सकता है, लेकिन जरूरी नहीं। यदि आप अपने उपयोगकर्ताओं को एक निर्देशिका सेवा (जैसे एलडीएपी) में संग्रहीत करते हैं, तो आप केवल एलडीएपी लॉगिन मॉड्यूल का उपयोग कर सकते हैं। अधिकांश एप्लिकेशन सर्वर या सर्वलेट कंटेनर (जैसे JBoss AS, Glassfish, Tomcat, आदि) उन्हें डिफ़ॉल्ट रूप से प्रदान करते हैं। यदि आपके उपयोगकर्ता डीबी में हैं, तो एक कॉलम में उपयोगकर्ता के लिए एक विदेशी कुंजी वाली एक साधारण तालिका और दूसरे कॉलम में भूमिका का नाम होगा। फिर आप एक डीबी लॉगिन मॉड्यूल का उपयोग कर सकते हैं जो भूमिकाओं को लाने के लिए एक साधारण क्वेरी का उपयोग करता है।
डेटाबेस स्तर पर आपके पास एक उपयोगकर्ता तालिका, एक भूमिका तालिका और एक उपयोगकर्ता-भूमिका तालिका होती है जो नियंत्रित करती है कि किन उपयोगकर्ताओं की कौन सी भूमिकाएँ हैं।
कक्षा स्तर पर आपके पास एक उपयोगकर्ता वर्ग होता है जिसमें संपत्ति के रूप में भूमिकाओं की एक सूची होती है।
आप उपयोगकर्ता वर्ग में विधियों को जोड़ सकते हैं उदाहरण के लिए IsAdmin या IsSuperUser।
संबंधित सवाल
नए सवाल
hibernate
Hibernate जावा भाषा के लिए ऑब्जेक्ट-रिलेशनल मैपिंग (ORM) लाइब्रेरी है जो डेवलपर्स को अपने अनुप्रयोगों में POJO- शैली डोमेन मॉडल का उपयोग करने के लिए सक्षम करता है जो ऑब्जेक्ट / रिलेशनल मैपिंग से परे विस्तृत तरीके से होता है।