ASP.NET MVC 5如何在Identity 2.0中删除用户及其相关数据

法兰瓦

我正在关注本文,以删除Identity 2.0中的用户http://www.asp.net/mvc/tutorials/mvc-5/introduction/examining-the-details-and-delete-methods

但是,我需要先删除AspNetUserRoles中的所有相关记录,然后再删除用户。

我找到了一个用Identity 1.0编写的示例,该示例中使用的某些方法不存在。

   // POST: /Users/Delete/5
        [HttpPost, ActionName("Delete")]
        [ValidateAntiForgeryToken]
        public async Task<ActionResult> DeleteConfirmed(string id)
        {
            if (ModelState.IsValid)
            {
                if (id == null)
                {
                    return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
                }

                var user = await context.Users.FindAsync(id);
                var logins = user.Logins;
                foreach (var login in logins)
                {
                    context.UserLogins.Remove(login);
                }
                var rolesForUser = await IdentityManager.Roles.GetRolesForUserAsync(id, CancellationToken.None);
                if (rolesForUser.Count() > 0)
                {

                    foreach (var item in rolesForUser)
                    {
                        var result = await IdentityManager.Roles.RemoveUserFromRoleAsync(user.Id, item.Id, CancellationToken.None);
                    }
                }
                context.Users.Remove(user);
                await context.SaveChangesAsync();
                return RedirectToAction("Index");
            }
            else
            {
                return View();
            }
        }

IdentityManager从任何地方都找不到context.Users也没有FindAsync()方法。

如何在Identity 2.0中正确删除用户及其相关记录?

Horizo​​n_Net

我认为您要查找的类是UserManagerRoleManager在我看来,它们是比直接违反上下文更好的方法。

的UserManager定义了一个方法RemoveFromRoleAsync,让你删除的用户从给定角色的能力(通过他的主要标识)。它还定义了几种Find方法,例如FindAsyncFindByIdAsyncFindByNameAsyncFindByEmailAsync它们都可以用来检索用户。要删除用户,您应该使用DeleteAsync方法,方法接受用户对象作为参数。为了获得用户是Identity成员的角色,您可以使用GetRolesAsync方法在其中传递用户ID。另外,我还看到您正在尝试从用户中删除登录名。为此,您应该使用RemoveLoginAsync 方法。

总的来说,您的代码将类似于以下代码:

// POST: /Users/Delete/5
[HttpPost, ActionName("Delete")]
[ValidateAntiForgeryToken]
public async Task<ActionResult> DeleteConfirmed(string id)
{
  if (ModelState.IsValid)
  {
    if (id == null)
    {
      return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
    }

    var user = await _userManager.FindByIdAsync(id);
    var logins = user.Logins;
    var rolesForUser = await _userManager.GetRolesAsync(id);

    using (var transaction = context.Database.BeginTransaction())
    {
      foreach (var login in logins.ToList())
      {
        await _userManager.RemoveLoginAsync(login.UserId, new UserLoginInfo(login.LoginProvider, login.ProviderKey));
      }

      if (rolesForUser.Count() > 0)
      {
        foreach (var item in rolesForUser.ToList())
        {
          // item should be the name of the role
          var result = await _userManager.RemoveFromRoleAsync(user.Id, item);
        }
      }

      await _userManager.DeleteAsync(user);
      transaction.Commit();
    }

    return RedirectToAction("Index");
  }
  else
  {
    return View();
  }
}

您需要根据您的需要调整此代码段,因为我不知道您的IdentityUser实现的外观。请记住根据需要声明UserManager在Visual Studio中使用“个人帐户”创建新项目时,可以找到如何执行此操作的示例

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何在ASP MVC 5(Microsoft.AspNet.Identity)中存根User.Identity.GetUserId()

来自分类Dev

如何在ASP.NET MVC 5中列出具有角色名称的用户

来自分类Dev

如何在Asp.Net MVC 4中模拟HttpContext.User.Identity.Name

来自分类Dev

如何使用AspNet.Identity使用Asp.Net MVC5 RTM位登录/认证用户?

来自分类Dev

如何在Visual Studio 2012中使用ASP.NET Identity创建新的MVC 5项目?

来自分类Dev

如何在ASP.Net MVC Identity 2中更改密码验证?

来自分类Dev

将详细信息表读取到ASP.NET MVC 5 Identity 2

来自分类Dev

如何在OWIN ASP.NET MVC5中注销用户

来自分类Dev

基于用户角色的ASP.NET MVC 5 Identity 2登录重定向

来自分类Dev

如何在ASP.NET MVC5 Identity 2中添加HTML电子邮件模板以进行电子邮件确认?

来自分类Dev

如何在Asp.net Identity 3.0和MVC 6中打开角色?

来自分类Dev

如何在ASP.NET MVC 5中关闭所有用户会话

来自分类Dev

2 ASP.NET MVC中的ViewModel

来自分类Dev

在ASP.NET MVC 5中填充User.Identity

来自分类Dev

ASP.NET Identity 3.0-如何在MVC应用程序中创建带有用户表的数据库?

来自分类Dev

如何在ASP.NET MVC中映射2个差异列表

来自分类Dev

ASP.NET MVC 5 Identity 2 PasswordSignInAsync方法始终返回false

来自分类Dev

如何在没有模型的ASP.NET 5 MVC中从查询访问数据

来自分类Dev

Asp.Net核心MVC6如何在Identity 3中初始添加角色

来自分类Dev

ASP.Net MVC 5中的Cookie

来自分类Dev

如何在ASP.Net MVC 5中跟踪匿名用户的活动?

来自分类Dev

如何在ASP Net Core MVC应用程序中从Azure AD B2C获取用户列表?

来自分类Dev

Identity如何在具有ASP.NET Core MVC 3.1的单个用户帐户的项目模板中工作?

来自分类Dev

如何在ASP.NET CORE MVC中覆盖默认的Identity AccessDenied路由

来自分类Dev

如何在Asp.Net MVC 4中模拟HttpContext.User.Identity.Name

来自分类Dev

如何在ASP.NET MVC 5 Razor数据库中更新表

来自分类Dev

如何在ASP.NET 5 MVC中访问缓存?

来自分类Dev

使用ASP.NET MVC 5 Razor添加相关数据

来自分类Dev

如何在 ASP.Net MVC 5 - Fluent API 中处理多对多相同的表(用户)

Related 相关文章

  1. 1

    如何在ASP MVC 5(Microsoft.AspNet.Identity)中存根User.Identity.GetUserId()

  2. 2

    如何在ASP.NET MVC 5中列出具有角色名称的用户

  3. 3

    如何在Asp.Net MVC 4中模拟HttpContext.User.Identity.Name

  4. 4

    如何使用AspNet.Identity使用Asp.Net MVC5 RTM位登录/认证用户?

  5. 5

    如何在Visual Studio 2012中使用ASP.NET Identity创建新的MVC 5项目?

  6. 6

    如何在ASP.Net MVC Identity 2中更改密码验证?

  7. 7

    将详细信息表读取到ASP.NET MVC 5 Identity 2

  8. 8

    如何在OWIN ASP.NET MVC5中注销用户

  9. 9

    基于用户角色的ASP.NET MVC 5 Identity 2登录重定向

  10. 10

    如何在ASP.NET MVC5 Identity 2中添加HTML电子邮件模板以进行电子邮件确认?

  11. 11

    如何在Asp.net Identity 3.0和MVC 6中打开角色?

  12. 12

    如何在ASP.NET MVC 5中关闭所有用户会话

  13. 13

    2 ASP.NET MVC中的ViewModel

  14. 14

    在ASP.NET MVC 5中填充User.Identity

  15. 15

    ASP.NET Identity 3.0-如何在MVC应用程序中创建带有用户表的数据库?

  16. 16

    如何在ASP.NET MVC中映射2个差异列表

  17. 17

    ASP.NET MVC 5 Identity 2 PasswordSignInAsync方法始终返回false

  18. 18

    如何在没有模型的ASP.NET 5 MVC中从查询访问数据

  19. 19

    Asp.Net核心MVC6如何在Identity 3中初始添加角色

  20. 20

    ASP.Net MVC 5中的Cookie

  21. 21

    如何在ASP.Net MVC 5中跟踪匿名用户的活动?

  22. 22

    如何在ASP Net Core MVC应用程序中从Azure AD B2C获取用户列表?

  23. 23

    Identity如何在具有ASP.NET Core MVC 3.1的单个用户帐户的项目模板中工作?

  24. 24

    如何在ASP.NET CORE MVC中覆盖默认的Identity AccessDenied路由

  25. 25

    如何在Asp.Net MVC 4中模拟HttpContext.User.Identity.Name

  26. 26

    如何在ASP.NET MVC 5 Razor数据库中更新表

  27. 27

    如何在ASP.NET 5 MVC中访问缓存?

  28. 28

    使用ASP.NET MVC 5 Razor添加相关数据

  29. 29

    如何在 ASP.Net MVC 5 - Fluent API 中处理多对多相同的表(用户)

热门标签

归档