如何在导入数据库后使用在ASP.NET MVC中的SQL Server中创建的角色?
问题描述:
我在Visual Studio 2013(快速的Web)创建一个新的ASP.NET MVC 5项目,我导入一个数据库,但是当我尝试使用如何在导入数据库后使用在ASP.NET MVC中的SQL Server中创建的角色?
if(User.IsInRole("Admin"))
来验证用户的角色仍然是确定用户是普通用户,而不是Admin。我想知道如何在导入数据库后在控制器中获取用户角色?
而且,如何确保角色被导入到我的ASP.NET MVC应用程序?
答
确保您的数据库中有必要的数据。您必须确定该角色位于“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);
}
}
}
}
没有理由编写您自己的角色管理器。
您需要设置角色管理器,请参阅此答案:https://stackoverflow.com/a/39139606/5519026 – Ziyad