usuarios permisos net mvc for example asp c# asp.net asp.net-core .net-core

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 como Id y ConcurrencyStamp .
  • ¿Dónde coloco el código para inicializar la base de datos con estas nuevas funciones: en Startup ? en Register bajo AccountController ?
  • ¿Cómo ato este nuevo rol a un usuario? Incluso he user2role las tablas y no sé cómo asignar los datos (no hay user2role o aspnetusers.role_id ).