में अनुमति सेट को परिभाषित करने के लिए एनम्स अलग-अलग कॉलम या एसक्यूएल सर्वर तालिका में प्रत्येक अनुमति को विभाजित करने के बजाय हम Flag
विशेषता Enum
पर बिट वार ऑपरेशंस के उपयोग के लिए उपयोग करने पर पुनर्विचार कर रहे हैं। संसाधनों को पढ़ने (पढ़ने, संशोधित करने, अपडेट करने) के लिए हमारा आवेदन अंतिम बिंदु (बाकी सेवाओं से नहीं) को परिभाषित करता है और प्रत्येक उपयोगकर्ता उदाहरण के लिए Bob has permissions to Read, Modify resource X
के लिए अनुमतियों के हकदार है, इसलिए जब बॉब आता है और इस संसाधन को एक्सेस करता है तो हम जांचते हैं कि बॉब को अनुमति है x.Now कि जहां हम लागू करने के लिए यह स्पष्ट है जा रहे हैं यहाँ मेरा संदेह कर रहे हैंसी #
मान लीजिए बॉब है पढ़ें, लिखें मैं क्या करना होगा फ्लैग किए गए enumerations का उपयोग कर संसाधन पर अनुमति हटाएँ
Permission.Read | Permission.Write | Permission.Delete
बिट बुद्धिमान और एक के अंतिम परिणाम है पूर्णांक या एक और Enum?डेटाबेस तालिका में इस अनुमति को संग्रहीत करने के लिए कॉलम
integer
होना चाहिए?यदि प्रश्न 1 का उत्तर
Enum
है तो क्या मुझेPermissions
enum पर एक और संपत्ति परिभाषित करनी चाहिए जो बिट वार और ऑपरेशन के पूर्णांक मान का प्रतिनिधित्व करती है?
disclaimer:
बॉब उदाहरण में निर्दिष्ट साइटों या किसी भी व्यक्ति के ढेर अतिप्रवाह नेटवर्क में किसी भी उपयोगकर्ता का प्रतिनिधित्व नहीं करता। यह सिर्फ एक और चरित्र
@ मैथ्यू को अपने सिर से दूर कर दूंगा, बिटवर्क के परिणाम को संग्रहित करना या तालिका में पूर्णांक के रूप में। मुझे एप्लिकेशन में अपनी अनुमति जांच कैसे करनी चाहिए। यहां कोड में बोलना 'अगर (IntegerFromDb == अनुमतियां। पढ़ें) {प्रिंट "सफलता!"; } 'होना चाहिए ** मैं टाइप अनुमतियों के Enum के लिए पूर्णांक पार्स ** और चेक कर सकते हैं? – Deeptechtons
@ डिप्टेचटन: आप आसानी से enum प्रकार पर किसी भी पूर्णांक को कास्ट कर सकते हैं: 'var perms = (अनुमतियां) IntegerFromDb'। यह सबसे सुरक्षित तरीका है, हालांकि मुझे लगता है कि आप बिना किसी कलाकार के ऊपर दिए गए कोड के साथ तुलना करने में सक्षम हो सकते हैं। अपेक्षित मान के साथ हमेशा '&' की तुलना करें, विशेष रूप से यदि सुझाए गए 'रीडवाइट' जैसे संयुक्त मानों का उपयोग करना क्योंकि एक होना संभव है और दूसरे को नहीं और '! = कोई नहीं' शैली की जांच करें। –
@ डिप्टेचटन: यद्यपि enums के लिए sane मानों के बारे में बिंदु # 3 में मेरे नोट्स को पढ़ना सुनिश्चित करें। सी # कुछ भयानक खेल सकता है यदि आप एक enum के लिए एक पूर्णांक डाला जो मूल्य के लिए समझ में नहीं आता है। –