如何删除使用UserManager.CreateAsync创建的用户

使用asp.net mvc5,我的用户管理系统似乎工作。 我可以使用谷歌或名称/密码登录..

但现在我正在开发一个用户管理界面,我需要能够删除现有用户。 这开始向我展示用户管理系统是多么令人困惑。 有很多不同的方式来处理用户..而且其中一些不起作用。

我阅读的大多数地方,都在谈论使用Membership.DeleteUser()。

但这不起作用……

用户创建了。

var user = new ApplicationUser() { UserName = model.UserName, Email = model.Email, ConfirmationToken = confirmationToken, IsConfirmed = false }; var result = await UserManager.CreateAsync(user, model.Password); 

现在稍后..如何删除这样的用户? (给出其名称或用户ID)

我已经尝试过在各种搜索中出现最多的东西..想出了会员资格作为解决方案。 但这肯定不适合MVC5? 例如

 var allusers = Membership.GetAllUsers(); // allusers is empty bool success = Membership.DeleteUser(model.name); // <-- success = false 

我可以让所有用户使用这种方法..

 ApplicationDbContext db = new ApplicationDbContext(); foreach (var user in db.Users) { ... } 

我可以找到一个单独的用户..

 ApplicationDbContext db = new ApplicationDbContext(); var um = new UserManager(new UserStore(db)); ApplicationUser user = um.FindById(model.userId); 

现在我该怎么删除一个呢? ….

更新

从Microsoft.AspNet.Identity版本2.0.0.0开始,您现在可以使用UserManager.Delete(user);删除具有Identity的UserManager.Delete(user);


对于后人

您指的是两个不同的东西,身份和成员资格。 较新版本的ASP.NET支持Identity和Membership,而Identity是默认的,而旧版本仅支持Membership(在这两个身份validation系统中)。

使用UserManager.CreateAsync创建用户时,您在Microsoft.AspNet.Identity命名空间中执行此操作。 当您尝试使用Membership.DeleteUser删除用户时,您在System.Web.Security命名空间中执行此操作。 他们生活在两个不同的世界。

正如另一条评论所述,Identity尚未支持删除用户 ,但它是2014年春季发布路线图中的第一个项目 。

但为什么要等? 将另一个属性添加到ApplicationUser模型,如下所示:

 public class ApplicationUser : IdentityUser { public string IsActive { get; set; } } 

然后,在您的控制器中删除用户:

 user.IsActive = false; 

用户登录时进行检查:

 if (user.IsActive == false) { ModelState.AddModelError(String.Empty, "That user has been deleted."); return View(model); } 

当删除的用户尝试重新注册而不是UserManager.Create ,请在注册页面上使用UserManager.Update及其新信息。

这些步骤将有效地删除用户。 如果您确实必须从数据库中清除其信息,则可以使用Entity Framework直接执行此操作 。

添加到之前的回复中。 如果你有

 public class ApplicationUser : IdentityUser { public string IsActive { get; set; } } 

然后,在您的控制器中删除用户:

 user.IsActive = false.ToString(); 

因为你的数据类型是一个字符串,而不是一个布尔值