c# - permisos - Cómo agregar roles personalizados a ASP.NET Core
authorize roles mvc 5 (1)
Puede hacerlo fácilmente creando un método CreateRoles
en su clase de inicio. Esto ayuda a comprobar si se crean los roles y crea los roles si no lo están; en el inicio de la aplicación. Al igual que.
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");
}
}
}
y luego podría llamar a la await CreateRoles(serviceProvider);
método del método Configure
en la clase de inicio. asegúrese de tener IServiceProvider
como parámetro en la clase Configure
Encontré esta respuesta, pero no parece encajar en mi proyecto ASP Net Core.
Cosas que trato de entender:
- ¿Cómo puedo agregar un rol personalizado? Incluso he mirado directamente en mi base de datos MySQL (tabla
aspnetroles
), pero no sé qué usar comoId
yConcurrencyStamp
. - ¿Dónde coloco el código para inicializar la base de datos con estas nuevas funciones: en
Startup
? enRegister
bajoAccountController
? - ¿Cómo ato este nuevo rol a un usuario? Incluso he
user2role
las tablas y no sé cómo asignar los datos (no hayuser2role
oaspnetusers.role_id
).