2017-09-17 7 views
0

Bonjour les gars je me demandais comment initialiser certaines tables qui ont été faites dans l'identité, j'ai implémenté un module de sécurité avec des permissions qui appartiennent à un certain rôle, donc j'ai dû ajouter des tables Permission et RolePermission et je n'ai pas pu trouver la manière dont les itialilize est ici mon code où ajouter les classes qui permettent de créer l'autorisation et les tables de RolePermission dans l'identitéASP.NET Comment puis-je initialiser une nouvelle table créée dans Identity C#?

namespace SSMX.Mantra.WebApi.Infrastructure 
{ 
public class ApplicationUser : IdentityUser 
{ 
    [Required] 
    [MaxLength(100)] 
    public string FirstName { get; set; } 

    [Required] 
    [MaxLength(100)] 
    public string LastName { get; set; } 

    [Required] 
    public byte Level { get; set; } 

    [Required] 
    public DateTime JoinDate { get; set; } 


    public virtual ICollection<Permission> Permissions { get; set; } 
    public virtual ICollection<RolePermission> RolePermissions { get; set; } 

    //Rest of code is removed for brevity 
    public async Task<ClaimsIdentity> 
    GenerateUserIdentityAsync(UserManager<ApplicationUser> manager, string 
    authenticationType) 
    { 
     var userIdentity = await manager.CreateIdentityAsync(this, 
     authenticationType); 
     // Add custom user claims here 
     return userIdentity; 
    } 
} 

public class Permission 
{ 

     public int Id { get; set; } 
     public string Code { get; set; } 
     public string Description { get; set; } 
} 

public class RolePermission 
{ 
    [Key] 
    public int IdRolePermission { get; set; } 
    public int IdPermission { get; set; } 
    public int IdRole { get; set; } 

    public virtual Permission Permission { get; set; } 
    public virtual IdentityRole Role { get; set; } 

} 
} 

et voici mon code qui initialise les tables utilisateur et son rôle dans la méthode de semences alors j'ai essayé faire la même chose que les tables User et Role en implémentant un PermissionManager mais je ne pourrais pas vous donner de l'aide merci les gars.

internal sealed class Configuration : DbMigrationsConfiguration<SSMX.Mantra.WebApi.Infrastructure.ApplicationDbContext> 
    { 
     public Configuration() 
     { 
      AutomaticMigrationsEnabled = false; 
     } 

     protected override void Seed(ApplicationDbContext context) 
     { 

      var manager = new UserManager<ApplicationUser>(new UserStore<ApplicationUser>(new ApplicationDbContext())); 

      var roleManager = new RoleManager<IdentityRole>(new RoleStore<IdentityRole>(new ApplicationDbContext())); 

      var user = new ApplicationUser() 
      { 
       UserName = "SuperPowerUser", 
       Email = "[email protected]", 
       EmailConfirmed = true, 
       FirstName = "Taiseer", 
       LastName = "Joudeh", 
       Level = 1, 
       JoinDate = DateTime.Now.AddYears(-3) 
      }; 

      manager.Create(user, "[email protected]!"); 

      if (roleManager.Roles.Count() == 0) 
      { 
       roleManager.Create(new IdentityRole { Name = "SuperAdmin" }); 
       roleManager.Create(new IdentityRole { Name = "Admin" }); 
       roleManager.Create(new IdentityRole { Name = "User" }); 
      } 

      var adminUser = manager.FindByName("SuperPowerUser"); 

      manager.AddToRoles(adminUser.Id, new string[] { "SuperAdmin", "Admin" }); 

      var permissions = new List<Permission> 
      { 
       new Permission() 
       { 
        Id = 1, Code = "101", Description = "Competencias.CentroDeportivo.Consulta" 
       }, 
       new Permission() 
       { 
        Id = 1, Code = "102", Description = "Competencias.CentroDeportivo.Eliminar" 
       }, 
       new Permission() 
       { 
        Id = 1, Code = "102", Description = "Competencias.CentroDeportivo.Crear" 
       } 

      }; 

     } 
    } 
+0

Si vous avez essayé d'implémenter un gestionnaire d'autorisations, veuillez publier le code que vous avez déjà, –

Répondre

0

Vous devez ajouter toutes les classes en tant que propriétés virtuelles dans la classe IdentityDbContext, qui est héritée de la DbContext dans la classe de configuration que vous avez montré ci-dessus, définissez

AutomaticMigrationsEnabled = true; 

puis dans la console Package Manager exécutez la commande de migration

update-database -verbose 
+0

T Rings pour votre réponse était si utile – Brandon