使用MembershipProvider删除时,是否存在归档asp.net用户的最佳做法?
基本上,我想要完成的是当我使用例如MembershipProvider.DeleteUser(“someusername@some.com”,true)删除用户时,我希望能够存档其配置文件。
答案 0 :(得分:0)
如果您只是Membership.DeleteUser(username,true).
会发生什么情况您可能会在成员资格上添加一个使用指令。如果配置正确,则无需创建新的SimpleMembershipProvider
实例。
如果您像这样动态创建它,则需要在该对象上设置连接并以编程方式对其进行配置(它不知道您在上面创建的连接)。通常人们会在web.config中执行此操作,但如果您使用表单身份验证模板创建了应用程序,那么您应该自动处理。
答案 1 :(得分:0)
由于(顾名思义)会员资格基于提供者模式,您可以轻松实现具有存档功能的DeleteUser方法。
对于SqlMembershipProvider,您可以轻松添加Deleted bit列并自定义aspnet_Users_DeleteUser存储过程,以便不会真正删除用户,只需设置此位即可。然后还修改其他sprocs以选择等,以便它是一致的。请查看http://msdn.microsoft.com/en-us/library/aa478949.aspx以获取概述。
答案 2 :(得分:0)
由于您使用的是旧会员服务提供商,因此这里有两个解决方案 -
将 aspnet_Membership 表的已批准列标记为 false ,以便用户无法登录。
如果您想这样做,则需要修改 aspnet_Users_DeleteUser 存储过程以更新 IsApproved 列,而不是删除用户。
正如您所说,您不希望将IsDeleted列添加到 aspnet_Users 表,请创建一个新表以跟踪已删除的用户。
您还需要修改 aspnet_Users_DeleteUser 存储过程,将 UserId 插入 DeletedUsers 表,而不是删除用户。
此外,您需要修改 aspnet_Membership_GetPasswordWithFormat 存储过程以进行登录验证。