我需要为数据库中的第一个用户创建“admin”角色。这是我的代码:
public static void SetAdminForTheFirstUser()
{
using(var _db = new ApplicationDbContext())
{
string roleName = "Admin";
var roleManager = new RoleManager<IdentityRole>(new RoleStore<IdentityRole>(new ApplicationDbContext()));
if(!roleManager.RoleExists(roleName))
{
var newRoleresult = roleManager.Create(new IdentityRole()
{
Name = roleName,
});
var userRole = new IdentityUserRole
{
UserId = _db.Profiles.FirstOrDefault().Id.ToString(),
RoleId = roleManager.FindByName(roleName).Id,
};
}
_db.SaveChanges();
}
}
如果角色不存在,有没有更好的方法来检查角色并为第一个用户创建角色?
答案 0 :(得分:0)
尝试将这些内容放入您的配置中(种子方法)。
protected override void Seed(Models.ApplicationDbContext context)
{
ParameterSeeder.Seed(context);
RoleSeeder.Seed(context);
UserSeeder.SeedAdmin(context);
CategorySeeder.SeedMain(context);
CategorySeeder.SeedChild(context);
ProductUnitSeeder.Seed(context);
ProductSeeder.Seed(context);
...
}
在有关播种机内,您可以指定您的部件:
internal static class RoleSeeder
{
internal static void Seed(ApplicationDbContext context)
{
var idManager = new IdentityManager();
// Create roles
var roleAdmin = new AllesVersRole {Description = "Administrator", Name = "Admin"};
var roleClient = new AllesVersRole {Description = "Clienten", Name = "Client"};
// Seed
AddRole(idManager, roleAdmin);
AddRole(idManager, roleClient);
context.SaveChanges();
}
private static void AddRole(IdentityManager idManager, AllesVersRole role)
{
if (!idManager.RoleExists(role.Name))
idManager.CreateRole(role.Name, role.Description);
}
}
我只能这样建议,因为调整简单易行