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

标签 c# asp.net asp.net-mvc-5

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

但现在我正在开发一个用户管理界面,我需要能够在其中删除现有用户。这开始让我明白用户管理系统是多么的困惑。与用户打交道的方式有很多种……但其中一些方式行不通。

我读到的大多数地方都在谈论使用 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<ApplicationUser>(new UserStore<ApplicationUser>(db));
ApplicationUser user = um.FindById(model.userId);

现在我该如何删除呢? ....

最佳答案

更新

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


为了子孙后代

您指的是两个不同的事物,身份和成员资格。较新版本的 ASP.NET 支持身份和成员身份,身份是默认设置,而旧版本仅支持成员身份(在这两个身份验证系统之外)。

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

正如另一条评论所述,deleting users is not yet supported out of the box by Identity , 但它 is the first item on their roadmap for a Spring of 2014 release .

但为什么要等?像这样向 ApplicationUser 模型添加另一个属性:

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

然后,在您的 Controller 中删除用户:

user.IsActive = false;

在用户登录时进行检查:

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

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

这些步骤将有效删除用户。如果您真的必须从数据库中清除他们的信息,you can use Entity Framework to do that more directly .

关于c# - 如何删除使用 UserManager.CreateAsync 创建的用户,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21506753/

相关文章:

javascript - 用 $() 附加元素的问题

c# - 填充 ViewModel 的正确方法?

c# - 将原始字节数据转换为 float[] 并且值需要介于 -1 和 1 之间

c# - Java 中 StringBuffer 的 .NET 等价物是什么?

asp.net - 如何在 C# 2.0 中加密 Web.config 中的用户名和密码

javascript - ASP gridview的Reload事件

c# - Azure通知中心,使用模板向设备发送消息

c# - Entity Framework - COUNT 而不是 SELECT

ASP.NET MVC 5 身份和 Azure

jQuery Ajax 缓存过期时间