ASP.NET MVC 5 - 默认身份用户CRUD

时间:2017-01-31 00:14:04

标签: asp.net asp.net-mvc asp.net-mvc-5 asp.net-identity

我是ASP.NET MVC的新手。

我使用默认身份个人用户帐户创建了一个应用程序。 我正在尝试实现一个管理面板,我想查看所有用户,他们的角色并编辑/删除它们(CRUD操作)。

我遇到了以下情况:

  

userManager.Users.ToList();

public ActionResult Index()
{
    return userManager.Users.ToList();
}

我曾尝试过对此进行研究。不幸的是,我无法实现它。

1 个答案:

答案 0 :(得分:1)

在您可能正在使用的ASP.NET Identity 2.0中,您需要在UserManager和RoleManager上公开。

userManager.Users.ToList();
roleManager.Roles.ToList();

您可以使用这两个管理器来创建角色并为用户分配角色。例如,要让用户担任特定角色,您可以执行以下操作:

var users = roleManager.FindByName(roleName).Users.Select(x => x.UserId);

要删除用户,您可以执行以下操作:

[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();
    }
}

如果您想更新用户,请:

var user = UserManager.FindById(User.Identity.GetUserId())

user.Email = AppUserViewModel.Email;
user.FName = AppUserViewModel.FName;
user.LName = AppUserViewModel.LName;
user.DOB = AppUserViewModel.DOB;
user.Gender = AppUserViewModel.Gender;

var result = await UserManager.UpdateAsync(user);