我正在修补最近使用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>
界面。
我在这一点上的结论是,如果你想要的话以及你想要的方式实现它,它只会被你的应用程序代码或未来的用户管理库调用。
答案 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