我正在修补最近 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>
界面中移除。
在这一点上,我的结论是,它可以根据您的需要以及您想要的方式实现,并且它只会被您的应用程序代码或未来的用户管理库调用。