हमारे एमवीसी सीक्यूआरएस ऐप के लिए, हमने मूल रूप से डोमेन में सभी उपयोगकर्ता से संबंधित जानकारी रखने से शुरुआत की, और, जैसा कि किसी ने उल्लेख किया है, वहां एक रजिस्टर यूज़र कमांड और उपयोगकर्ता रजिस्ट्रार इवेंट था। डोमेन में उपयोगकर्ता की जानकारी संग्रहीत करने के बाद, वह ईवेंट प्रकाशित हो गया और पढ़ने के पक्ष में उठाया गया, जिसने एक उपयोगकर्ता भी बनाया और सभी पासवर्ड हैंश इत्यादि उत्पन्न किए। हमने फिर पढ़ने के पक्ष में प्रमाणीकरण किया: नियंत्रक एक के खिलाफ प्रमाणीकृत करने के लिए 'पढ़ें मॉडल प्रमाणीकरण सेवा' पर कॉल करें।
बाद में सड़क पर नीचे, हम पूरी तरह से इस पर प्रतिक्रिया कर रहे थे। यह पता चला कि हमें कमांड प्रसंस्करण पक्ष पर किए गए हमारे आदेशों को अधिकृत करने के लिए सुरक्षा में निर्माण के लिए उपयोगकर्ता से संबंधित जानकारी तक पहुंच की आवश्यकता है (हमारा ऐप एक वितरित ऐप है जो एक कतार में अतुल्यकालिक आदेशों को 'आग और भूल' भेजता है दूसरी तरफ एक स्वायत्त श्रोता)। इसके बाद सुरक्षा घटक को हमारे डोमेन के संदर्भ में उपयोगकर्ता प्रोफ़ाइल देखने और प्राप्त करने की आवश्यकता थी, जिससे बोझिल संदर्भ संदर्भ सामने आए।
हम एक अलग डेटाबेस है कि हम नहीं बल्कि डोमेन या पढ़ा मॉडल से संबंधित की तुलना में एक केंद्रीय घटक के और अधिक हो सकता है, माना जाता है में उपयोगकर्ता सुरक्षा सामान डाल का फैसला किया। हम अभी भी उपयोगकर्ता प्रोफ़ाइल डोमेन से संबंधित जानकारी को बनाए रखने और पढ़ने के लिए मॉडल (जैसे कार्य शीर्षक, ट्विटर खाते यूआरएल आदि), लेकिन सभी सुरक्षा से संबंधित सामान, पासवर्ड हैश की तरह, यह केंद्रीय डेटाबेस में जमा हो जाती है। यह तब एक सेवा के साथ सुलभ है, जो एमवीसी और कमांड लेखक दोनों के लिए उपलब्ध है।
हम वास्तव में इस refactor के लिए यूआई में कुछ भी बदलने की, के रूप में हम सिर्फ रजिस्टर उपयोगकर्ता आदेश हैंडलर से उपयोगकर्ताओं को रजिस्टर करने के लिए सेवा बुलाया नहीं था। यदि आप इसे इस तरह से करने जा रहे हैं, तो आपको अपने उपयोगकर्ता सेवा से संबंधित संचालन बेवकूफ बनाने के लिए यहां सावधान रहना होगा। ऐसा इसलिए है कि आप अपने आदेशों को दुष्प्रभावों के बिना पुनः प्रयास करने का मौका दे सकते हैं, क्योंकि आप जानकारी के 2 स्रोत (ईएस और उपयोगकर्ता डेटाबेस) अपडेट कर रहे हैं।
अंत में, आप निश्चित रूप से इस केंद्रीय घटक के लिए सदस्यता प्रदाताओं इस्तेमाल कर सकते हैं, लेकिन वहाँ उस के साथ pitfalls हो सकता है। हमने अपना खुद का लेखन समाप्त कर दिया - यह करना बहुत आसान है। यह आलेख this से लिंक करता है, जो इसे कार्यान्वित करने का एक अच्छा उदाहरण प्रदान करता है।
उसी तरह आप संदेश आधारित सिस्टम में यह कर, AFAIK। आप प्रमाणीकरण और प्रमाणीकरण मिश्रण लगते हैं। आप सुरक्षित करने की कोशिश कर रहे हैं क्या? –
मैं उन्हें मिश्रण नहीं कर रहा हूं, मैं वास्तव में दोनों के बारे में पूछ रहा हूं :) मेरी मुख्य समस्या यह है कि मुझे नहीं पता कि यह संदेश आधारित सिस्टम में कैसे किया जाता है;) – tuxbear