【问题标题】:How do I use the roles created in SQL Server in ASP.NET MVC after importing the database?导入数据库后,如何在 ASP.NET MVC 中使用 SQL Server 中创建的角色?
【发布时间】:2017-10-17 01:09:31
【问题描述】:
我在 Visual Studio 2013 (Express for Web) 中创建了一个新的 ASP.NET MVC 5 项目,并导入了一个数据库,但是当我尝试使用
验证用户角色时
if(User.IsInRole("Admin"))
它仍然将用户识别为普通用户,而不是管理员。我想知道导入数据库后如何在控制器中获取用户角色?
而且,我如何确保将角色导入到我的 ASP.NET MVC 应用程序中?
【问题讨论】:
标签:
sql-server
asp.net-mvc
asp.net-mvc-4
【解决方案1】:
确保您的数据库中有必要的数据。您必须确保角色在“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);
}
}
}
}
没有理由编写自己的角色管理器。