2011-12-04 13 views
6

मैं लागू करने के लिए सही तरीका और कोड desing पैटर्न निम्नलिखित का उपयोग कर, या एक अच्छा वस्तु उन्मुख समाधान यह पता लगाने की कोशिश कर रहा हूँ के लिए अनुमतियों का एक सेट लागू करने के लिए जिसमें परमिट का एक चर सेट सेट हो सकता है, प्रत्येक व्यक्ति उसे एप्लिकेशन पर अलग-अलग कार्रवाई करने में सक्षम बनाता है। विचार एक निश्चित उपयोगकर्ता ऑब्जेक्ट को बताने में सक्षम होना है, उदाहरण के लिए एक ऑर्डर हटाएं, अगर उसके पास ऐसा कोई परमिट है जो उसे ऐसा करने में सक्षम बनाता है, तो अपवाद बढ़ाने के लिए इसे करें और नहीं।डिजाइन पैटर्न एक उपयोगकर्ता

अगर किसी के पास इस जगह को पढ़ने के लिए कोई स्थान है, तो यह भी सहायक है। धन्यवाद

उत्तर

0

एक उपयोगकर्ता कई परमिट हो सकता है, तो प्रत्येक परमिट अलग निष्पादन कार्यों की अनुमति देता है, तो आप डेकोरेटर पैटर्न पर एक नजर है चाहते हो सकता है।

हालांकि यह आपकी आवश्यकताओं पर बहुत निर्भर करता है।

5

सी #/.NET में अनुमति के लिए कार्यों में बनाया गया है।

फ़ंक्शन पर पहुंच आवश्यकताओं को PrincipalPermissionAttribute कक्षा, या PrincipalPermission के साथ कोड के अंदर सेट किया गया है।

[PrincipalPermission(SecurityAction.Demand, Role = "Administrators")] 
static void CheckAdministrator() 
{ 
    Console.WriteLine("User is an administrator"); 
} 

इन दोनों बुला धागे की वर्तमान पहचान के खिलाफ चेक: बुलाया जा रहा है, जब तक कि वर्तमान उपयोगकर्ता Administrators भूमिका का एक सदस्य है से एक विधि रोकने के लिए, निम्न विशेषता (MSDN से नमूना) किया जाता है। तो आपको अपने उपयोगकर्ताओं को थ्रेड पहचान के रूप में सेट करने की अनुमति देने के लिए IPrincipal इंटरफ़ेस को कार्यान्वित करने की आवश्यकता है। फिर आप सुरक्षा की जांच के लिए मानक .NET PrincipalPermission का उपयोग कर सकते हैं। यह ठीक वैसे ही काम करता है जैसा आप चाहते हैं - यदि सुरक्षा मांग पूरी नहीं हुई है, तो एक अपवाद फेंक दिया जाता है।

+0

मैं इस प्रकार के सिद्धांत-केंद्रित दृष्टिकोण को भी पसंद करता हूं, मैं आपको एक कदम आगे ले जाने की सलाह दूंगा और सिद्धांत-निर्धारण सम्मिलनों को समाहित करने के लिए घोषणात्मक और/या अनिवार्य अनुमति वस्तुएं तैयार करूंगा। यह सिद्धांत विवरण को शेष कोडबेस में लीक करने से रोक देगा। ध्यान रखें कि इस पैटर्न का उपयोग करने के लिए आपको बड़े सीएएस बुनियादी ढांचे को खरीदने की ज़रूरत नहीं है। हालांकि, एक चेतावनी, डब्ल्यूसीएफ सुरक्षा मॉडल बहुत अलग है इसलिए अगर आप जा रहे हैं तो अनदेखा करें। पैटर्न का नमूना यहां दिया गया है। http://www.smelser.net/blog/post/2009/03/09/Why-do-I-need-your-Permission.aspx – JoeGeeky

+0

@ जोजीकी ऐसा लगता है कि मैं यही देख रहा हूं, लेकिन कैसे करें मैं एक उपयोगकर्ता के परमिट सेट? साथ ही, इन उपयोगकर्ताओं और उपयोगकर्ता समूहों के पास विंडोज यूएसी उपयोगकर्ता/उपयोगकर्ता समूह के साथ कुछ लेना देना नहीं है? – mbmihura

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