2017-02-15 8 views
5

मैं एक ऐसे अनुप्रयोग का विकास कर रहा हूं जिसके लिए मेरे पास उपयोगकर्ता क्षेत्र और एक व्यवस्थापक क्षेत्र है। मैंने इन्हें अलग कोणीय 2 मॉड्यूल में अलग कर दिया है। मैंने आलसी लोडिंग को सफलतापूर्वक कार्यान्वित किया है ताकि व्यवस्थापक मॉड्यूल केवल तभी लोड किया जा सके जब उपयोगकर्ता द्वारा '/ admin' का अनुरोध किया जाए।सुरक्षित रूप से आलसी लोड मॉड्यूल (कोणीय 2)

कोणीय 2 प्रलेखन से, मुझे लगता है कि मैं बहुत की तरह एक "canLoad" गार्ड निर्दिष्ट कर सकते हैं:

{ 
    path: 'admin', 
    loadChildren: 'app/admin/admin.module#AdminModule', 
    canLoad: [AdminGuard] 
    } 

और इतने की तरह एक समारोह canLoad एक AdminGuard वर्ग के भीतर लागू:

canLoad(route: Route): boolean { 
    return this.authService.isAdmin(); 
} 

(जहां एडमिन() बैकएंड एपीआई को कॉल कर सकता है जो वर्तमान उपयोगकर्ता की भूमिका या उस तरह की कुछ चीज़ लौटाएगा)

लेकिन क्या यह वास्तव में किसी भी गैर- AdminModule लोड करने से व्यवस्थापक? जब तक कि मैं गलतफहमी नहीं कर रहा हूं, यह सब कोड क्लाइंट पर स्थित है, तो क्या क्लाइंट को "कैनलोड" विधि को संशोधित करने से रोकने के लिए कुछ भी है ताकि यह हमेशा सच हो जाए? इसलिए जैसा:

canLoad(route: Route): boolean { 
    return true; 
} 

इस प्रकार ग्राहक किसी भी मॉड्यूल वे चाहते हैं लोड करने के लिए अनुमति देता है।

स्पष्ट रूप से बैकएंड एपीआई को किसी भी कॉल को व्यवस्थापक स्थिति की आवश्यकता होगी, लेकिन ऐसा लगता है कि कोई भी उपयोगकर्ता व्यवस्थापक UI को देख पाएगा, जो कि मेरे लिए थोड़ा अजीब लगता है। क्या कोई इसे मेरे लिए साफ़ कर सकता है?

उत्तर

4

यह एक अच्छा सवाल है और अगर कोई इस के लिए विस्तृत उत्तर देता तो मैं उत्सुक था। तो मुझे यह लिंक मिला जिस पर एक बहुत अच्छी बातचीत चल रही थी।

Angular 2 Reddit Article

एक टिप्पणी है कि वास्तव में मेरे लिए बाहर अटक इस एक था।

एसपीए में बात हो रही है, आम तौर पर एचटीएमएल टेम्पलेट्स और अपने js फ़ाइलें किसी के लिए जाँच करने के लिए पर्याप्त परवाह खुले में बाहर हो जाएगा। आपका एसपीए डेटा में आपके सर्वर पर बोलेंगे (केवल पढ़ें: जेसन), तो टेम्पलेट्स क्लाइंट साइड पर इस डेटा के साथ पॉप्युलेट होंगे। इसलिए आपकी प्राथमिक चिंता इस एपीआई की सुरक्षा है। सत्र, कुकीज़, टोकन, सभी का मतलब है कि अभी भी मान्य है। मैं खुद को प्रमाणित करने और अधिकृत करने के लिए टोकन का उपयोग करता हूं। एक एपीआई अनुरोध में सर्वर हस्ताक्षरित टोकन होगा, जो सत्यापित है और किस भूमिका और प्रमाण पत्र निकाले गए हैं, फिर का उपयोग यह निर्धारित करने के लिए किया जाता है कि उपयोगकर्ता उस अनुरोध को अधिकृत करने के लिए अधिकृत है। असफल चेक क्लाइंट को 401-अनधिकृत लौटाएगा। कोणीय पक्ष पर, हम सफल लॉगिन के बाद प्राप्त टोकन को सहेजते हैं, फिर इसे के बाद के अनुरोधों के लिए उपयोग करें। मैं क्रेडेंशियल और भूमिकाओं को भी डीकोड करता हूं, और के साथ यह उपयोगकर्ता की जानकारी प्रदर्शित करता है और मार्गों को अधिकृत करता है। कोणीय में रूट गार्ड कैनएक्टिवेट इंटरफ़ेस के माध्यम से प्राप्त किया गया है, जिसमें आप कई चेन कर सकते हैं: {पथ: 'संरक्षित', CanActivate: [LoggedInGuard]}, {पथ: 'सुपरसक्रेट', कैनएक्टिवेट: [लॉग इनइनगार्ड, AdminGuard]}। ..etc लेकिन क्लाइंट साइड (पढ़ें: कोणीय) गार्ड अंततः यूएक्स समस्या है, सुरक्षा साधन नहीं है। एक जानकार हैकर देव कंसोल के साथ चर के साथ बस गड़बड़ कर सकता है, या सीधे एपीआई कॉल के साथ इसे पूरी तरह से बाईपास कर सकता है।उपयोगकर्ताओं को यह दिखाने के लिए बहुत कुछ है कि क्या त्रुटि हुई और कहीं और नेविगेट करें

+0

यह वास्तव में प्रश्न का उत्तर नहीं है। हालांकि यह एक अच्छी वार्तालाप से जुड़ा हुआ है। अब तक इस विषय पर मिली जानकारी मुझे इस सुविधा के लिए स्पष्ट कारण की पहचान करने में विफल रही है, या इसे हल करने में विफल रही है। मैंने कुछ मिनट पहले इस प्रश्न को पोस्ट किया: https://stackoverflow.com/questions/47613907/ – BBaysinger

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