अधिकांश अनुप्रयोगों में, उपयोगकर्ता की भूमिका के आधार पर अभिगम नियंत्रण की आवश्यकता होती है। इस पाठ में, हम वेब एप्लिकेशन के लिए इस तरह के नियंत्रण को स्थापित करने का एक उदाहरण देखेंगे। इस कार्य के भाग के रूप में, आपको निम्न की आवश्यकता होगी:
- उपयोगकर्ता भूमिका को परिभाषित करें
- भूमिका के आधार पर, नेविगेशन मेनू आइटम के प्रदर्शन को नियंत्रित करें
- उन पेजों पर नेविगेट करना असंभव बनाएं जो किसी विशिष्ट भूमिका के लिए एक्सेस योग्य नहीं हैं
प्रारंभिक तैयारी
आइए तैयारी के भाग से शुरू करें। आगे कॉन्फ़िगरेशन की सुविधा के लिए, एक वैश्विक चर बनाना आवश्यक है जो वर्तमान उपयोगकर्ता के बारे में जानकारी संग्रहीत करेगा। इस प्रकार, यदि आपको जाँच करने की आवश्यकता है, तो आपको हर बार बैकएंड से संपर्क करने और उपयोगकर्ता के बारे में जानकारी का अनुरोध करने की आवश्यकता नहीं होगी। वैश्विक चर से आवश्यक डेटा पढ़ना पर्याप्त होगा।
उन विभिन्न विकल्पों को ध्यान में रखना आवश्यक है जिनके द्वारा एक अधिकृत उपयोगकर्ता आवेदन में प्रवेश कर सकता है:
- Login पेज पर सफल प्राधिकरण के परिणामस्वरूप लॉगिन करें।
- पंजीकरण के परिणामस्वरूप लॉगिन करें।
- पहले से अधिकृत उपयोगकर्ताओं के लिए एक विशिष्ट पृष्ठ के लिंक के माध्यम से सीधे प्रवेश।
इनमें से प्रत्येक मामले में, बैकएंड क्वेरी का उपयोग किया जाता है जो उपयोगकर्ता के बारे में जानकारी देता है। संबंधित व्यवसाय प्रक्रिया में, आपको पहले बनाए गए वैश्विक चर User_gv को रिकॉर्ड करने के लिए केवल एक Set Variable ब्लॉक जोड़ना होगा।
यह ब्लॉक अधिकृत उपयोगकर्ताओं के लिए CheckAuth व्यवसाय प्रक्रिया में जोड़ा गया है, जो व्यवसाय प्रक्रिया अनुभाग में Prebuilt फ़ोल्डर में स्थित है।
लॉगिन या साइनअप पृष्ठों के माध्यम से प्रवेश करने के लिए, ब्लॉक को संबंधित बटनों की व्यावसायिक प्रक्रियाओं में जोड़ा जाता है।
आइए आवेदन के प्रारंभ पृष्ठ पर परिणाम देखें। ऐसा करने के लिए, आइए एक Label जोड़ें जो उपयोगकर्ता को नाम से अभिवादन करेगा और भूमिका के आधार पर लिखेगा कि वह एक व्यवस्थापक है या नहीं।
आपको एक व्यवसाय प्रक्रिया सेट अप करने की आवश्यकता है जो किसी भी Label के प्रदर्शित होने पर सक्रिय हो जाती है ( Label onShow ट्रिगर)।
- Expand User । उपयोगकर्ता के नाम और भूमिकाओं के बारे में जानकारी के लिए।
- In Array । यह जांचने के लिए कि दिया गया उपयोगकर्ता Admins समूह में है या नहीं।
- If-Else । जाँच के परिणामों के आधार पर क्रियाओं की परिवर्तनशीलता के लिए।
- Set Variable (String) । यदि उपयोगकर्ता Admins समूह का सदस्य नहीं है या यदि कोई खाली मान है तो " NOT " के मान के साथ एक String चर बनाने के लिए।
- Concat Strings (Multiple) . " Hi, Ken. You are NOT Admin ”।
- Label Update Properties । पृष्ठ पर इस वाक्यांश के अंतिम प्रदर्शन के लिए।
यदि सब कुछ सही ढंग से किया जाता है, तो पृष्ठ में प्रवेश करने के किसी भी संस्करण के साथ, स्क्रीन का एक समान परिणाम होगा।
मेनू आइटम दृश्यता नियंत्रण
अब मुख्य भाग पर जाने का समय आ गया है। आइए केवल एडमिन के लिए एक पेज बनाएं और उस पर जाने के लिए संबंधित मेनू आइटम ( Admin Page ) जोड़ें। सबसे अच्छा समाधान डिफ़ॉल्ट रूप से इसकी दृश्यता को अक्षम करना है।
Navigate ब्लॉक का उपयोग करके, आपको Page पैरामीटर में निर्मित पृष्ठ का चयन करना होगा और इस पृष्ठ की आईडी का पता लगाना होगा।
इस उदाहरण में, प्रतिबंधित पहुंच वाला केवल एक पृष्ठ है, लेकिन जब ऐसे कई पृष्ठ हो सकते हैं और पृष्ठों की सूची को संग्रहीत करने के लिए वैश्विक रीड-ओनली वैरिएबल बनाते हैं, तो तुरंत विकल्प का पता लगाना बेहतर होता है।
इसके बाद, आपको नेविगेशन मेनू आइटम की दृश्यता को नियंत्रित करने के लिए स्वयं व्यवसाय प्रक्रिया बनाने की आवश्यकता है (आइए इसे Set NavItem Visibility कहते हैं)।
- Expand User । उपयोगकर्ता भूमिकाओं के बारे में जानकारी के लिए।
- In Array । यह जांचने के लिए कि दिया गया उपयोगकर्ता Admins समूह में है या नहीं।
- For each loop । वैश्विक चर में निर्दिष्ट सभी पृष्ठों के लिए लूप चलाने के लिए।
- NavItem Update Properties । उपयोगकर्ता एक व्यवस्थापक है या नहीं, इसके आधार पर किसी तत्व की दृश्यता को नियंत्रित करने के लिए।
लॉगिन और उपयोगकर्ता पंजीकरण बटन की व्यावसायिक प्रक्रियाओं में होम पेज पर जाने से पहले बनाई गई व्यावसायिक प्रक्रिया का ब्लॉक जोड़ा जाना चाहिए (पहले, Set Variable ब्लॉक को वर्तमान उपयोगकर्ता के बारे में जानकारी के साथ एक चर रिकॉर्ड करने के लिए जोड़ा गया था)।
प्रत्यक्ष लिंक के माध्यम से अभिगम नियंत्रण
करने के लिए आखिरी चीज एक व्यवसाय प्रक्रिया स्थापित करना है जिसे हर बार " On app launch " ट्रिगर द्वारा एप्लिकेशन लॉन्च किया जाता है। पिछले चरण की तरह, प्रमाणीकृत उपयोगकर्ताओं के लिए Set NavItems Visibility ब्लॉक जोड़ें।
इसके अलावा, एक बंद पृष्ठ तक सीधे लिंक के माध्यम से पहुंच के खिलाफ सुरक्षा प्रदान करना आवश्यक है:
- In Array (Admin_pages) । यह जांचने के लिए कि क्या लक्ष्य पृष्ठ केवल-व्यवस्थापक पृष्ठों की सूची में है।
- If-Else । जाँच के परिणामों के आधार पर क्रियाओं की परिवर्तनशीलता के लिए। यदि False है, तो आप निर्दिष्ट पृष्ठ पर नेविगेट कर सकते हैं। True के मामले में, इस पृष्ठ तक पहुँचने के अधिकार के लिए एक अतिरिक्त जाँच आवश्यक है।
- Expand User । वैश्विक चर User_gv से उपयोगकर्ता जानकारी पढ़ने के लिए।
- In Array । Admins समूह में सदस्यता की जाँच करने के लिए।
- If-Else । व्यवस्थापक अधिकारों की उपस्थिति या उनकी अनुपस्थिति के आधार पर क्रियाओं का चयन करने के लिए।
- Navigate । आवश्यक पृष्ठ पर जाने के लिए या उस स्थिति में प्रारंभ पृष्ठ पर पुनर्निर्देशित करने के लिए जहां उचित अधिकारों के बिना कोई उपयोगकर्ता केवल व्यवस्थापकों के लिए लक्षित पृष्ठ खोलने का प्रयास करता है।
चयनित पृष्ठ अब अनधिकृत पहुंच से सुरक्षित हैं। अधिकारों के अभाव में, वे मेनू में प्रदर्शित नहीं होते हैं और सीधे लिंक के माध्यम से भी उन तक नहीं पहुँचा जा सकता है।
यह याद रखना महत्वपूर्ण है कि कुछ पेजों के लिए एक्सेस प्रोटेक्शन का मतलब उन एंडपॉइंट्स के लिए स्वचालित सुरक्षा नहीं है जिनका उपयोग उन पेजों पर किया जा सकता है। ऐसा करने के लिए, यदि आवश्यक हो, तो Middleware Token Auth सेटिंग्स में, आपको उन उपयोगकर्ता समूहों को निर्दिष्ट करने की आवश्यकता है जिनके पास चयनित समापन बिंदु तक पहुंच अधिकार हैं।