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

4

我是ASP.NET MVC的新手。

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

我找到了下面的代码:

userManager.Users.ToList();

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

我已经尝试过研究相关问题,但很遗憾无法实施。

1个回答

2
在您可能正在使用的 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);

你好Dawid,非常感谢你的回复。我会尝试一下并且再联系你。 - Tango
希望它能有所帮助! - Dawid Rutkowski

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接