Checking if a user is in a role in asp.net mvc Identity

前端 未结 3 564
你的背包
你的背包 2020-12-31 02:23

I\'m having an issue seeding my database with users and roles.

The User and the Role are both created (I can see them in the database after the error is thrown).

3条回答
  •  攒了一身酷
    2020-12-31 02:52

    I found out the solution, in case anyone else is having this problem.

    The "IsInRole" is expecting a User.Id - not a UserName string - so I changed to:

                if (!userManager.IsInRole(user.Id, "Admin"))
                {
                    userManager.AddToRole(user.Id, "Admin");
                }
    

    So the working code becomes:

        ApplicationDbContext userscontext = new ApplicationDbContext();
        var userStore = new UserStore(userscontext);
        var userManager = new UserManager(userStore);
    
        var roleStore = new RoleStore(userscontext);
        var roleManager = new RoleManager(roleStore);
    
        // Create Role
        if (!roleManager.RoleExists("Admin"))
        { 
            roleManager.Create(new IdentityRole("Admin"));
        }
    
        if(!userscontext.Users.Any(x=> x.UserName=="marktest"))
        {
            // Create User
            var user = new ApplicationUser { UserName = "marktest", Email = "marktest@gmail.com" };
            userManager.Create(user, "Pa$$W0rD!");
    
            // Add User To Role
            if (!userManager.IsInRole(user.Id, "Admin"))
                {
                    userManager.AddToRole(user.Id, "Admin");
                }
    
    
        }
    

    I hope that helps,

    Mark

提交回复
热议问题