Başlangıç sınıfınızda bir CreateRoles
yöntemi oluşturarak bunu kolayca yapabilirsiniz. Bu, rollerin oluşturulup oluşturulmadığını kontrol eder ve eğer değillerse rolleri oluşturur; uygulama başlangıcında. Öyle olsun.
private async Task CreateRoles(IServiceProvider serviceProvider)
{
//adding customs roles : Question 1
var RoleManager = serviceProvider.GetRequiredService<RoleManager<IdentityRole>>();
var UserManager = serviceProvider.GetRequiredService<UserManager<ApplicationUser>>();
string[] roleNames = { "Admin", "Manager", "Member" };
IdentityResult roleResult;
foreach (var roleName in roleNames)
{
var roleExist = await RoleManager.RoleExistsAsync(roleName);
if (!roleExist)
{
//create the roles and seed them to the database: Question 2
roleResult = await RoleManager.CreateAsync(new IdentityRole(roleName));
}
}
//Here you could create a super user who will maintain the web app
var poweruser = new ApplicationUser
{
UserName = Configuration["AppSettings:UserName"],
Email = Configuration["AppSettings:UserEmail"],
};
string userPWD = Configuration["AppSettings:UserPassword"];
var _user = await UserManager.FindByEmailAsync(Configuration["AppSettings:AdminUserEmail"]);
if(_user == null)
{
var createPowerUser = await UserManager.CreateAsync(poweruser, userPWD);
if (createPowerUser.Succeeded)
{
//here we tie the new user to the role : Question 3
await UserManager.AddToRoleAsync(poweruser, "Admin");
}
}
}
ve sonra Başlangıç sınıfında Configure
yönteminden await CreateRoles(serviceProvider);
yöntemini diyebiliriz. Configure
sınıfında bir parametre olarak IServiceProvider
olduğundan emin olunuz
Buna benziyor! Eve geldiğimde bunu uygulamaya çalışacağım, kodumda test ettiğim anda "cevaplandı" olarak işaretleyeceğim. Hakkında "Kodu nereye koyacağım": "Startup.cs" içindeki 'Configure' yönteminin sonunda çağırmam gerektiğini varsayalım? –
Teşekkürler, Xavier. Evet, 'Configure' yönteminin sonunda bunu çağırabilirsiniz. Rotaları yapılandırdıktan hemen sonra. –
O kadardı, çok teşekkür ederim. Cevaplandı olarak işaretlemek. Kısa bir not, çünkü benim için önemsiz olan bazı adımlar olduğundan (bir başkasına yardımcı olabilirse): 'Configure' yönteminin altından işlevinizi çağırmak için şunu yaptım:' var serviceProvider = app.ApplicationServices.GetService(); CreateRoles (ServiceProvider) .Wait(); '. –