2008-11-11 10 views
6

मैं एएसपी.NET सदस्यता का उपयोग कर रहा हूं और देखा कि Roles class से में कोई विधि नहीं है एक भूमिका (उदाहरण के लिए इसका नाम), केवल उन्हें बनाने और हटाने के लिए संशोधित करें।.NET में सदस्यता का उपयोग करके आप भूमिका का नाम कैसे बदलते हैं?

क्या यह संभव है या यह समर्थित नहीं है?

संपादित करें: @ चेगुए वेरा: हाँ, अच्छा कामकाज।

क्या आप जानते हैं (अतिरिक्त क्रेडिट के लिए :)) क्यों यह संभव नहीं है?

+0

क्यों यह संभव नहीं है: वे क्यों चुना इसे लागू करने के लिए नहीं, कि मैं नहीं जानता कि: आधार वर्ग [ProviderBase सार्वजनिक अमूर्त वर्ग RoleProvider] में नहीं अभी तक;) मैं आपको प्रश्न – CheGueVerra

उत्तर

19

सदस्यता प्रदाता में भूमिका नाम बदलने का कोई सीधा तरीका नहीं है।

मुझे उन उपयोगकर्ताओं की सूची मिल जाएगी जो आप नाम बदलना चाहते हैं, फिर उन्हें सूची से हटाएं, भूमिका हटाएं, नए नाम के साथ भूमिका बनाएं और फिर उपयोगकर्ताओं को भूमिका के साथ पहले जोड़ें नया नाम

public void RenameRoleAndUsers(string OldRoleName, string NewRoleName) 
{ 
    string[] users = Roles.GetUsersInRole(OldRoleName); 
    Roles.CreateRole(NewRoleName); 
    Roles.AddUsersToRole(users, NewRoleName); 
    Roles.RemoveUsersFromRole(users, OldRoleName); 
    Roles.DeleteRole(OldRoleName); 
} 

इससे भूमिका में सभी उपयोगकर्ताओं के लिए भूमिका का नाम बदल जाएगा।

अनुवर्ती: भूमिकाएं, यह सुनिश्चित करने के लिए उपयोग की जाती हैं कि उपयोगकर्ता सिस्टम में केवल अपना हिस्सा निभाता है, इस प्रकार उपयोगकर्ता। आईसइनोल (ROLE_NAME), उपयोगकर्ता के लिए लागू होने वाली बीआर प्रतिभूतियों को लागू करने में आपकी सहायता करेगा, यदि आप फ्लाई पर भूमिका के नाम बदल सकते हैं, तो आप यह सत्यापित करने के लिए कैसे जा रहे हैं कि उपयोगकर्ता वास्तव में उस भूमिका में है। वैसे मैं समझ गया, जब मैंने इसके बारे में पूछा।

rtpHarry संपादित करें: compilable ग # विधि में बदल दिया स्यूडोकोड नमूना

5

एएसपी.NET सदस्यता मॉडल में एक भूमिका का नाम बदलना एक खराब बात ™ होगा, क्योंकि अनुमतियों को परिभाषित करने के लिए कॉन्फ़िगरेशन फ़ाइल में भूमिका नामों का उपयोग किया जाता है। यदि भूमिका नाम बदलने के लिए एक प्रोग्रामेटिक तरीका था (जो डेटाबेस में परिवर्तन जारी रहा), तो आप डेटाबेस का उपयोग कर किसी भी वेब ऐप्स के लिए web.config में किसी भी भूमिका-आधारित सुरक्षा कॉन्फ़िगरेशन को तुरंत तोड़ देंगे, और कोई रास्ता नहीं होगा यह गारंटी देने के लिए कि एक एकल वेब ऐप उस सदस्यता डीबी का उपयोग करके प्रत्येक वेब ऐप की कॉन्फ़िगरेशन को बदल सकता है।

+1

सच पूछने दूँगा, लेकिन मैं कॉन्फ़िगरेशन फ़ाइल का उपयोग करने की योजना नहीं बना रहा हूं, क्योंकि मेरे उपयोगकर्ताओं द्वारा नई भूमिकाएं बनाई जा सकती हैं, और वे उस एप्लिकेशन के माध्यम से कॉन्फ़िगर कर सकते हैं, जिस पर नई भूमिकाएं हैं सेवा मेरे। मुझे रनटाइम चेक जोड़ने की ज़रूरत है, इसलिए यह प्रतिबंध आवश्यक नहीं है – juan

+2

और यदि आप कोई भूमिका हटाते हैं तो वही नहीं होगा? – juan