将新用户和角色添加到asp.net身份示例吗?

问题描述 投票:1回答:1

我已经安装了asp.net身份示例https://www.nuget.org/packages/Microsoft.AspNet.Identity.Samples,并尝试使用用户“ [email protected]”创建一个新角色“ SAdmin”。已创建用户,但“ Sadmin”具有与“ Admin”相同的角色]

我已将IdentityConfig.cs修改为

    //Create [email protected] with password=Admin@123456 in the Admin role        
    public static void InitializeIdentityForEF(ApplicationDbContext db) {
        var userManager = HttpContext.Current.GetOwinContext().GetUserManager<ApplicationUserManager>();
        var roleManager = HttpContext.Current.GetOwinContext().Get<ApplicationRoleManager>();
        const string name = "[email protected]";
        const string password = "Admin@123456";
        const string roleName = "Admin";

        const string Sname = "[email protected]";
        const string Spassword = "SAdmin@123456";
        const string SroleName = "SAdmin";

        //Create Super if it does not exist
        var Srole = roleManager.FindByName(SroleName);
        if (Srole == null)
        {
            Srole = new IdentityRole(roleName);
            var roleresult = roleManager.Create(Srole);
        }

        var Suser = userManager.FindByName(Sname);
        if (Suser == null)
        {
            Suser = new ApplicationUser { UserName = Sname, Email = Sname };
            var result = userManager.Create(Suser, Spassword);
            result = userManager.SetLockoutEnabled(Suser.Id, false);
        }

        // Add Suser to Role Admin if not already added
        var SrolesForUser = userManager.GetRoles(Suser.Id);
        if (!SrolesForUser.Contains(Srole.Name))
        {
            var result = userManager.AddToRole(Suser.Id, Srole.Name);
        }

        //Create Role Admin if it does not exist
        var role = roleManager.FindByName(roleName);
        if (role == null) {
            role = new IdentityRole(roleName);
            var roleresult = roleManager.Create(role);
        }

        var user = userManager.FindByName(name);
        if (user == null) {
            user = new ApplicationUser { UserName = name, Email = name };
            var result = userManager.Create(user, password);
            result = userManager.SetLockoutEnabled(user.Id, false);
        }

        // Add user admin to Role Admin if not already added
        var rolesForUser = userManager.GetRoles(user.Id);
        if (!rolesForUser.Contains(role.Name)) {
            var result = userManager.AddToRole(user.Id, role.Name);
        }
    }
c# asp.net asp.net-mvc-5 asp.net-identity-2
1个回答
0
投票

问题出在代码中...以下代码块负责

    if (Srole == null)
    {
    **Srole = new IdentityRole(roleName);**
    var roleresult = roleManager.Create(Srole);
    }

将突出显示的行更改为

    **Srole = new IdentityRole(SroleName);**

应该解决

© www.soinside.com 2019 - 2024. All rights reserved.