【问题标题】:ASP.NET MVC 5 - Default Identity user CRUDASP.NET MVC 5 - 默认身份用户 CRUD
【发布时间】:2017-06-16 07:20:27
【问题描述】:

我是 ASP.NET MVC 的新手。

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

我遇到了以下情况:

userManager.Users.ToList();

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

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

【问题讨论】:

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


    【解决方案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);
    

    【讨论】:

    • 您好 Dawid,非常感谢您的回复。我会试试这个然后回来。
    • 希望对您有所帮助!
    猜你喜欢
    • 2014-04-30
    • 2013-09-06
    • 1970-01-01
    • 1970-01-01
    • 2014-10-12
    • 2019-03-22
    • 2019-06-09
    • 2019-07-08
    • 2014-01-02
    相关资源
    最近更新 更多