使用MembershipProvider归档ASP.Net用户

时间:2013-04-04 19:45:48

标签: asp.net asp.net-membership archive

使用MembershipProvider删除时,是否存在归档asp.net用户的最佳做法?

基本上,我想要完成的是当我使用例如MembershipProvider.DeleteUser(“someusername@some.com”,true)删除用户时,我希望能够存档其配置文件。

3 个答案:

答案 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 表,请创建一个新表以跟踪已删除的用户。

enter image description here

您还需要修改 aspnet_Users_DeleteUser 存储过程,将 UserId 插入 DeletedUsers 表,而不是删除用户。

此外,您需要修改 aspnet_Membership_GetPasswordWithFormat 存储过程以进行登录验证。