2008-12-09 10 views
9

मैं परतों के बीच अच्छे अलगाव के साथ अपने वेब ऐप को डिज़ाइन करने के लिए अपनी पूरी कोशिश कर रहा हूं। मैं रिपोजिटरी पैटर्न का उपयोग कर रहा हूं और इस तरह एक SQLObjectRepository है जिसे मेरे ऑब्जेक्ट सेवा द्वारा बुलाया जाता है जिसे मेरे वेब फ्रंट एंड द्वारा बुलाया जाता है।रिपोजिटरी पैटर्न और लेयरिंग। मैं सुरक्षा कहां लागू करूं?

मेरे ऑब्जेक्ट मॉडल में, उपयोगकर्ता एक या अधिक क्षेत्रों से जुड़ा हुआ है जो उन वस्तुओं को फ़िल्टर करना चाहिए जिनके पास उन्हें पहुंच होना चाहिए। मेरा सवाल यह है कि, जब मैं ऑब्जेक्ट्स के लिए पूछताछ कर रहा हूं, क्या मैं ऑब्जेक्ट्स पर अनुमतियां सेट करने के लिए कोड में सेवा डालता हूं, या वह कोड भंडार में होना चाहिए? यदि उपयोगकर्ता 2 क्षेत्रों का सदस्य है, तो क्या मुझे उपयोगकर्ता को सेवा के पैरामीटर के रूप में पास करना चाहिए, या क्या मुझे उपयोगकर्ता के क्षेत्र को सेवा में पास करना चाहिए?

उत्तर

3

मैं करूंगा:

  • इस तरह से है कि यह आप की तरह किसी भी जगह में लागू किया जा सकता में सुरक्षा जांच लिखें। इस तरह आप आवश्यकताओं को बदलने के रूप में refactor कर सकते हैं।

  • सुरक्षा जांच वास्तव में हमेशा लागू होते हैं, यह भंडार परत में स्थापित करेंगे (या बेहतर, एक पहलू में अपनी भाषा यह समर्थन करता है) ताकि कई सेवाओं के सभी शेयर आम सुरक्षा अगर वे एक ही भंडार का उपयोग करेगा । अन्यथा इसे सेवा में रखें (या सेवा पर कार्य करने वाला एक पहलू)।

  • सुरक्षा जाँच तंत्र के लिए पूरे उपयोगकर्ता वस्तु पारित:

    • अगर सुरक्षा जांच बाद में अधिक जटिल हो जाता (उपयोगकर्ता की अन्य संपत्तियों पर निर्भर करता है) एपीआई परिवर्तन नहीं होगा;
    • यह अधिक अर्थपूर्ण समझ बनाता है - आप जांच रहे हैं कि उपयोगकर्ता को कुछ करने की अनुमति है, न कि देशों की एक सूची।
संबंधित मुद्दे