2011-03-25 11 views
7

जब मैं "हटाएं" लिंकबटन पर क्लिक करता हूं, तो यह मेरे "JobPost.mdf" में मेरी "UserDetail" तालिका से सभी उपयोगकर्ता जानकारी को हटा सकता है, यह भी हटा देता है संबंधित "aspnet_Users" & "aspnet_Membership", लेकिन "UserInRole" में अभी भी उपयोगकर्ता नाम शामिल है। भले ही मैंने कोड निर्दिष्ट किया: सदस्यता। डेलेट यूज़र (उपयोगकर्ता नाम, सत्य);सदस्यता। DeleteUser (UserName, true) उपयोगकर्ता को भूमिका से हटा नहीं रहा

मुझे लगता है कि बूल डिलीटलरेटेड डेटा के लिए सच है, लेकिन यह वास्तव में userInRole को हटा नहीं देता है। तो अगली बार जब उपयोगकर्ता एक ही नाम से पंजीकृत होता है, तो यह स्वचालित रूप से "व्यवस्थापक" भूमिका प्राप्त करता है।

यह "deleteUser" पृष्ठ मैं इसे संरक्षित "व्यवस्थापक" फ़ोल्डर में रखता हूं।

इसे कैसे हल करें? क्यों सदस्यता। DeleteUser (UserName, true) UserInRole को हटा नहीं देता है?

protected void GridView2_RowCommand(object sender, GridViewCommandEventArgs e) 
{ 
    if (e.CommandName == "Delete") 
    { 
     string UserName = e.CommandArgument.ToString(); 
     Membership.DeleteUser(UserName, true); 
     JobPostDataContext db = new JobPostDataContext(); 
     var query = from u in db.UserDetails 
        where u.UserName == UserName 
        select u; 
     foreach (var item in query) 
     { 
      db.UserDetails.DeleteOnSubmit(item); 
     } 
     db.SubmitChanges(); 

     FormsAuthentication.SignOut();  
    } 
} 

संरक्षित व्यवस्थापक फ़ोल्डर के अंदर मेरे web.config:

<configuration xmlns="http://schemas.microsoft.com/.NetConfiguration/v2.0"> 
    <system.web> 
     <authorization> 
      <allow roles="Administrators" /> 
      <deny users="*" /> 
     </authorization> 
    </system.web> 
</configuration> 
+0

यह कस्टम टेबल और 'SqlMembershipProvider' टेबल का मिश्रण जैसा दिखता है। वास्तव में 'UserInRole' क्या है जिसका आप उल्लेख कर रहे हैं? (इसमें अभी भी 'उपयोगकर्ता नाम' है।) –

उत्तर

9

UserInRole तालिका में दो Guid फ़ील्ड शामिल हैं। उपयोगकर्ता नाम संग्रहित नहीं है। जब भी कोई नया उपयोगकर्ता बनाया जाता है, तो उन्हें एक नया, पूरी तरह अद्वितीय UserId असाइन किया जाता है।

आपको क्यों लगता है कि उपयोगकर्ता-भूमिका संघ को हटाया नहीं जा रहा है? आप SELECT COUNT(*) FROM aspnet_UserInRoles WHERE UserId={DeletedUserId} के लिए क्वेरी करकर सटीक रूप से इसका परीक्षण कर सकते हैं।

मैंने आपके संदर्भ के लिए नीचे ASP.NET सदस्यता SQL डेटाबेस स्कीमा शामिल किया है। enter image description here

इसके अलावा, Roles एपीआई आपको मैन्युअल रूप से भूमिकाओं को हटाने की अनुमति देता है। इसलिए, किसी दिए गए उपयोगकर्ता के लिए सभी भूमिकाओं को हटाने के लिए यह दिखता है:

void DeleteUserRoles(string username) 
{ 
    foreach (var role in Roles.GetRolesForUser(username)) 
     Roles.RemoveUserFromRole(username, role);    
} 
+1

बहुत बहुत धन्यवाद! यह आपके द्वारा बताए गए कार्यों के रूप में काम करता है। आपके मूल्यवान समय और उत्कृष्ट प्रस्तुति के लिए धन्यवाद। – jenifer

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

  • कोई संबंधित समस्या नहीं^_^