ASP.NET Membership Provider以及如何软删除帐户?

时间:2013-08-29 14:45:42

标签: asp.net-mvc asp.net-mvc-3 asp.net-membership

我正在使用MVC3,EF5,C#,Sql Server 2008 R2。

我正在使用成员资格提供程序和我自己的一些“组织”表以及成员资格表的链接表。

当我在我的应用程序中取消帐户时,我会进行软删除,这对我的桌子来说很好。但是,我不确定我应该对相关帐户的会员记录做些什么。理想情况下,我也希望软删除记录。

问题在于,当我尝试使用与已取消帐户相同的用户名创建新帐户时,我收到“用户名已存在。请输入其他用户名”。类型错误。

显然我可以很难删除会员用户,但这意味着我很难删除我不希望做的应用程序中的所有相关记录。

思考。

感谢。

3 个答案:

答案 0 :(得分:2)

您可以编写自定义成员资格提供程序并覆盖DeleteUser方法并执行您需要的任何逻辑。

答案 1 :(得分:1)

默认成员资格提供程序需要唯一的用户名,您可以为用户名添加前缀,以便多个用户可以具有相同的名称,或者在软删除时修改用户名以包含一些前缀,以便可以重复使用。如果我是诚实的,那么这两者都不是特别好,但除非你添加自己的“显示名称”字段,否则你会遇到约束。

答案 2 :(得分:1)

您正在使用使用存储过程的旧版ASP.Net Membership Provider。这对您的案例来说是个好消息,因为它比使用Entity Framework的新New Universal Provider更容易修改。

最简单的方法是创建一个表来跟踪已删除的用户。 (您可能已根据您的问题创建了它。)

enter image description here

然后你想修改 aspnet_Users_DeleteUser 存储过程

  • 将UserId插入DeletedUsers表而不是删除用户。
  • 将用户名和电子邮件更改为最后附加GUID(以便具有相同用户名和电子邮件地址的用户可以再次注册)

同时将 aspnet_Membership 表的 IsApproved 列更新为false,以防止再次使用该用户名登录。