导入数据库后,如何使用ASP.NET MVC中的SQL Server中创建的角色?

时间:2017-10-17 01:09:31

标签: sql-server asp.net-mvc asp.net-mvc-4

我在Visual Studio 2013(Express for Web)中创建了一个新的ASP.NET MVC 5项目,我导入了一个数据库,但当我尝试使用

验证用户角色时
if(User.IsInRole("Admin"))

它仍然将用户标识为普通用户,而不是管理员。我想知道在导入数据库后如何在控制器中获取用户角色?

而且,如何确保将角色导入我的ASP.NET MVC应用程序?

1 个答案:

答案 0 :(得分:0)

确保您的数据库中包含必要的数据。您必须确保该角色位于" AspNetRoles"表和用户链接在" AspNetUserRoles"表。为确保您拥有数据,您可以使用以下种子:

public static class RoleSeeder
{
    public static void Seed()
    {
        CreateRole("Admin", "Administratie", "Administratie");
        ...
    }

    private static void CreateRole(string name, string description, string group)
    {
        using (var db = new DbContext())
        {
            if (!db.Roles.Any(r => r.Name == name))
            {
                var role = new Role { Name = name, Description = description, Group = group };

                var store = new RoleStore<Role>(db);
                var manager = new RoleManager<Role>(store);

                manager.Create(role);
            }
            else
            {
                var store = new RoleStore<Role>(db);
                var manager = new RoleManager<Role>(store);

                var dbRole = manager.FindByName(name);
                dbRole.Description = description;
                dbRole.Group = group;

                manager.Update(dbRole);
            }
        }
    }
}

没有理由写自己的角色经理。