为什么在ASP.Net Identity中不支持删除

时间:2013-10-19 12:52:28

标签: asp.net visual-studio-2013 asp.net-mvc-5 asp.net-identity

我正在修补最近使用Visual Studio 2013进行RTM的新身份验证功能。

在实现自定义UserStore时,我正在查看包含在框中的UserStore的反编译源Microsoft.AspNet.Identity.EntityFramework.UserStore<TUser>。我注意到不支持删除用户的方法:

  public class UserStore<TUser> : IUserLoginStore<TUser>, IUserClaimStore<TUser>, IUserRoleStore<TUser>, IUserPasswordStore<TUser>, IUserSecurityStampStore<TUser>, IUserStore<TUser>, IDisposable where TUser : IdentityUser
  {
       // other stuff omitted

    public virtual Task DeleteAsync(TUser user)
    {
      throw new NotSupportedException();
    }
  }

那不奇怪不是吗?为什么删除不支持的用户?

我承认我记不起我编写的生产系统硬删除的用户记录,但我不明白为什么不支持此功能。

是否存在技术原因,或仅仅是因为微软认为删除用户记录“不好”并将其留作开发人员覆盖该方法的练习?

更新

为了了解ASP.NET团队的想法,我搜索了DeleteAsync(TUser user)的框架用法。框架中的任何内容似乎都没有调用它。因此,似乎他们可以完全离开IUserStore<TUser>界面。

我在这一点上的结论是,如果你想要的话以及你想要的方式实现它,它只会被你的应用程序代码或未来的用户管理库调用。

2 个答案:

答案 0 :(得分:4)

我们只是没时间完成它的1.0,它将作为其他管理相关apis的一部分添加到Update 1中,就像UserManager上的IQueryable Users属性一样。 (它已经在夜间1.1-alpha1包中实现)

答案 1 :(得分:4)

删除用户帐户

在1.0中,如果必须删除用户,则无法通过UserManager执行此操作。他们现在用2.0修正了它:

var result = await UserManager.DeleteAsync(user);

请参阅http://blogs.msdn.com/b/webdev/archive/2014/03/20/test-announcing-rtm-of-asp-net-identity-2-0-0.aspx