C#-在种子方法中创建角色



我想为用户创建两个角色。一个是RegularUser,另一个是Administrator。既然我首先做所有的代码,我该如何创建两个角色,然后分配一个用户作为管理员,所有这些都在种子方法中(如果可能的话(

我假设您正在使用Identity Context,如果是这样,那么您可以添加一个可以进行种子设定的类,并根据您的情况从Startup.cs/Program.cs运行它。

在这种情况下,YourContext应该继承自IdentityDbContext<IdentityUser>

public class SeedUser
{
private readonly YourContext _context;
private readonly UserManager<IdentityUser> _userManager;
private readonly RoleManager<IdentityRole> _roleManager;
public SeedUser(YourContext context, UserManager<IdentityUser> userManager, RoleManager<IdentityRole> roleManager)
{
_context = context;
_userManager = userManager;
_roleManager = roleManager;
}
public async Task SeedAsync()
{
if (await _context.Users.CountAsync() == 0)
{
var adminUser = new IdentityUser("admin");
var nonadminUser = new IdentityUser("nonadmin");
await _userManager.CreateAsync(adminUser, "PWD");
await _userManager.CreateAsync(nonadminUser, "PWD");
const string administratorRole = "Administrator";
await _roleManager.CreateAsync(new IdentityRole(administratorRole));
await _userManager.AddToRoleAsync(adminUser, administratorRole);
}
}
}

然后可以从方法的Startup.cs触发种子代码

public void Configure(IApplicationBuilder app, 
IHostingEnvironment env,
ILoggerFactory loggerFactory,
IEmailLoggerProvider emailLoggerProvider)
{ 
new SeedUser()
.SeedAsync()
.GetAwaiter()
.GetResult();
}

最新更新