为现有用户分配角色

时间:2018-03-13 07:14:41

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

大家好日子,

我在为MVC5中的现有用户分配角色时遇到了一些麻烦,这将由管理员从只能由管理员访问的视图中完成到目前为止,我已经在启动时创建了一个角色,并将其分配给了一个超级用户。此后有权将管理员的角色授予其他特定用户。

        private void createRolesAndDefaultUser()
    {
        ApplicationDbContext db = new ApplicationDbContext();
        var roleManager = new RoleManager<IdentityRole>(new RoleStore<IdentityRole>(db));
        var UserManager = new UserManager<ApplicationUser>(new UserStore<ApplicationUser>(db));

        //Creation of "Admin" role and Default Admin
        if (!roleManager.RoleExists("Admin"))
        {
            //Create "Admin" role
            var role = new Microsoft.AspNet.Identity.EntityFramework.IdentityRole();
            role.Name = "Admin";
            roleManager.Create(role);

            //Create SuperUser/DefaultAdmin
            var User = new ApplicationUser();
            User.UserName = "superUser@email.com";
            User.Email = "superUser@email.com";
            string Password = "Password01!";

            var superUser = UserManager.Create(User, Password);

            //Assign role to superUser
            if (superUser.Succeeded)
            {
                var res = UserManager.AddToRole(User.Id, "Admin");
            }
        }
    }

我在网上看过很多文章,允许在注册时分配角色。由于我不希望用户选择自己的角色,因此SuperUser可以将管理员角色分配给现有用户。

我遇到的问题是如何为用户分配角色,这只能由SuperUser完成?

1 个答案:

答案 0 :(得分:0)

var UserManager = new UserManager<ApplicationUser>(new UserStore<ApplicationUser>(db));
            UserManager.AddToRole(UserManager.FindByName(temp).Id, "Admin");

temp存储将被授予管理员权限的用户的UserName