मैंने अपने मूल वर्कफ़्लो को एक्सप्रेस के सामान्य उदाहरण के साथ संयोजित किया, जिसे देखा गया यहाँ . यह इस प्रकार है:
- जब उपयोगकर्ता शुरू में ऐप लोड करता है, तो एक एक्सप्रेस एंडपॉइंट पर एक http कॉल किया जाता है जो यह जांचता है कि उपयोगकर्ता के लिए कोई सत्र पहले से मौजूद है या नहीं। यदि ऐसा है, तो उपयोगकर्ता
$rootScope
. में संग्रहीत है और लॉग इन माना जाता है। - जब भी AngularJS रूट बदलता है, उसी एंडपॉइंट तक पहुँचा जाता है। मार्ग सुरक्षा को उसी तरह से निर्दिष्ट किया गया था जैसा वर्णित यहां
. यदि समापन बिंदु कभी वापस आता है कि कोई सत्र मौजूद नहीं है,
$rootScope.user
सेट नहीं है (यदि इसकी आवश्यकता है), और उपयोगकर्ता को लॉगिन पृष्ठ पर पुनर्निर्देशित किया जाता है। - जब लॉगिन फॉर्म संसाधित हो जाता है, तो यह एक्सप्रेस एंडपॉइंट पर पोस्ट हो जाता है। एंडपॉइंट उपयोगकर्ता को mongoDB (यदि यह मौजूद है) से पुनर्प्राप्त करता है, और पासवर्ड हैश करने का प्रयास करता है। यदि यह एक मैच है, तो उपयोगकर्ता का सत्र सेट किया जाता है, मोंगो डीबी में संग्रहीत किया जाता है, और एंडपॉइंट
user
देता है ऑब्जेक्ट (पहले बताए अनुसार $rootScope में स्टोर करने के लिए उपयोग किया जाता है)। - किसी भी समय किसी भी अन्य समापन बिंदु तक पहुँचा जाता है, कार्यों को पहले
restrict
के माध्यम से पारित किया जाता है फ़ंक्शन जो यह सुनिश्चित करता है कि क्लाइंट को कोई डेटा भेजने से पहले एक सत्र मौजूद है। यह एक401
देता है यदि कोई सत्र मौजूद नहीं है, जिसे तब इस HTTP इंटरसेप्टर का उपयोग करके कोणीय पक्ष पर नियंत्रित किया जाता है।$rootScope.user
. को अनसेट करने के लिए और लॉगिन स्क्रीन पर रीडायरेक्ट करें। - जब उपयोगकर्ता कोणीय पक्ष पर "लॉग आउट" पर क्लिक करता है, तो सत्र अनसेट हो जाता है और मोंगो डीबी से हटा दिया जाता है,
$rootScope.user
शून्य पर सेट है, और उपयोगकर्ता को सामने वाले पृष्ठ पर वापस भेज दिया जाता है।