12

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

在实现自定义 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>界面中移除。

在这一点上,我的结论是,它可以根据您的需要以及您想要的方式实现,并且它只会被您的应用程序代码或未来的用户管理库调用。

4

2 回答 2

5

删除用户帐户

在 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

于 2014-05-28T13:51:55.697 回答
4

我们刚刚没时间完成 1.0,它将作为其他与管理相关的 api 的一部分添加到更新 1 中,例如 UserManager 上的 IQueryable Users 属性。(它已经在 nightly 1.1-alpha1 包中实现了)

于 2013-10-20T04:47:14.873 回答