Membership.DeleteUser()
은 삭제할 사용자의 userprofile을 삭제 관리합니다. 왜 webpages_membership
에 저장된 정보도 삭제되지 않습니다.Membership.DeleteUser는 사용자의 관련 행을 모두 삭제하지 않습니다.
현재로서는 역할을 사용하지 않으므로 답변을 염두에 두시기 바랍니다.
Membership.DeleteUser()
은 삭제할 사용자의 userprofile을 삭제 관리합니다. 왜 webpages_membership
에 저장된 정보도 삭제되지 않습니다.Membership.DeleteUser는 사용자의 관련 행을 모두 삭제하지 않습니다.
현재로서는 역할을 사용하지 않으므로 답변을 염두에 두시기 바랍니다.
나는 테스트를 실시하여 SimpleMembershipProvider.DeleteUser이 보급 된대로 작동하지 않음을 확인했습니다. 문서에 따르면
이 방법은 (기본적으로 webpages_Membership) 회원 계정 테이블에서 항목을 삭제합니다. deleteAllRelatedData이 true이면 사용자 테이블에 저장된 모든 사용자 데이터도 삭제됩니다.
그러나
내 시험에서 나는 참으로 에게 deleteAllRelatedData를 설정하고 그냥 그대로 webpages_membership에서 항목을 떠나는 USERPROFILE 테이블에서 항목을 삭제. 설명서의 버그 또는 구현시 SimpleMembership.하지만 해결 방법을 찾았습니다. 먼저 SimpleMembershipProvider.DeleteAccount으로 전화하십시오. 그러면 webpages_membership 테이블의 항목이 삭제됩니다. 그런 다음 SimpleMembershipProvider.DeleteUser으로 전화하여 UserProfile 테이블의 항목을 제거하십시오. 여기에 내 테스트를 위해 사용한 코드 스 니펫이 있습니다.
var roles = (SimpleRoleProvider)Roles.Provider;
var membership = (SimpleMembershipProvider)Membership.Provider;
if (!roles.RoleExists("Admin"))
{
roles.CreateRole("Admin");
}
if (membership.GetUser("test", false) == null)
{
membership.CreateUserAndAccount("test", "test");
}
//Commented this out because you will get a foreign key
//error if you try to delete the user without removing the
//the mapping of the user to a role
//if (!roles.GetRolesForUser("test").Contains("Admin"))
//{
// roles.AddUsersToRoles(new[] { "test" }, new[] { "admin" });
//}
//This will delete the user information from webpages_membership
bool wasDeleted = membership.DeleteAccount("test");
//This will delelet the user information form UserProfile
wasDeleted = membership.DeleteUser("test", true);
위에서 볼 수 있듯이 역할을 사용하고 있고 그 역할을 해당 사용자에게 매핑 한 경우에는 작동하지 않습니다. 사용자를 제거하기 전에 제거해야합니다. 저는 이것이 zms6445의 문제가 아니라는 것을 알고 있습니다.하지만 저는 이것을 롤을 사용하는 사람들에게 보여주고 싶었습니다.
어떻게 DeleteAccount 및 DeleteUser 메서드에 액세스합니까? 귀하의 해결 방법을 시도하고 SimpleMembershipProvider 클래스에서 사용할 수있는 유일한 방법은 Equals 및 ReferenceEquals입니다. – zms6445
답변에 내 테스트 코드가 추가되었습니다. 바라기를 이것은 당신의 질문에 답할 것입니다. 질문에 코드 샘플을 제공하지 않으면 도와 드릴 수 있습니다. –
훌륭한 직업! 이것은 완벽하게 작동했습니다. – zms6445