【发布时间】:2016-07-02 01:59:37
【问题描述】:
我正在尝试编写从 Asp.Net Mvc 6 中的 Startup.cs 创建默认管理员超级用户的代码,我可以只添加所有用户角色,但我无法自动将管理员用户分配到 AspNetUsers 表中.一些专家可以帮助我纠正这个问题,因为我的嵌入代码如下:
private async Task CreateRoles(ApplicationDbContext context, IServiceProvider serviceProvider)
{
var userManager = serviceProvider.GetRequiredService<UserManager<ApplicationUser>>();
var roleManager = serviceProvider.GetRequiredService<RoleManager<IdentityRole>>();
// First, Creating User role as each role in User Manager
List<IdentityRole> roles = new List<IdentityRole>();
roles.Add(new IdentityRole {Name = "Admin", NormalizedName = "ADMINISTRATOR"});
roles.Add(new IdentityRole { Name = "Member", NormalizedName = "MEMBER" });
roles.Add(new IdentityRole { Name = "Librarian", NormalizedName = "LIBRARIAN" });
roles.Add(new IdentityRole { Name = "Borrower", NormalizedName = "BORROWER" });
roles.Add(new IdentityRole { Name = "Reader", NormalizedName = "READER" });
//Then, the machine added Default User as the Admin user role
foreach (var role in roles)
{
var roleExit = await roleManager.RoleExistsAsync(role.Name);
if (!roleExit)
{
context.Roles.Add(role);
context.SaveChanges();
}
}
//Next, I create an Admin Super User who will maintain the LMS website panel
var userAdmin = new ApplicationUser()
{
UserName = "TrueMan",
Email = "alpha@lms.com",
};
string userPWD = "Alpha@Mega";
var chkUser = userManager.AddPasswordAsync(userAdmin, userPWD);
if (chkUser.IsFaulted)
{
await roleManager.CreateAsync(new IdentityRole { Name = "Admin", NormalizedName = "ADMINISTRATOR" });
}
userAdmin = await userManager.FindByNameAsync("TrueMan");
await userManager.AddToRoleAsync(userAdmin, "Admin");
//await userManager.AddToRoleAsync(user, "Admin");
}
【问题讨论】:
标签: c# asp.net sql-server asp.net-core-mvc