2017-09-17 31 views
0

你好傢伙我想知道如何初始化一些以身份創建的表,我已經實現了一個具有屬於某個角色的權限的安全模塊,所以我必須添加一個Permission和RolePermission表,但是我找不到這裏怎麼itialilize他們的方式是我的代碼,我補充一點,允許創建許可類和RolePermission表中的身份ASP.NET如何初始化在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; } 

} 
} 

這是我的代碼初始化用戶和角色表中的種子法,所以我嘗試通過實現一個PermissionManager來執行與User和Role表相同的操作,但是我不能讚賞任何幫助,謝謝你們。

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

如果您嘗試實施權限管理器,請張貼您已有的代碼, –

回答

0

你需要的所有類添加爲IdentityDbContext類虛擬財產,是從的DbContext 在配置類,你上面顯示繼承,設置

AutomaticMigrationsEnabled = true; 

然後在Package Manager控制檯運行遷移命令

update-database -verbose 
+0

T hanks爲您的答案是如此有用 – Brandon