2014-02-27 8 views
5

Ich verwende ASPNet Identity, um Sicherheit in meiner Webanwendung zu implementieren.Erweitern von IdentityRole und IdentityUser

Es gibt eine Anforderungen wo, ich muss die IdentityRole und IdentityUser erweitern.

Hier ist mein Code, um den IdentityUser zu erweitern.

public class ApplicationUser : IdentityUser 
{ 
    public virtual User User { get; set; } 
} 

public class ApplicationDbContext : IdentityDbContext<ApplicationUser> 
{ 
    public ApplicationDbContext() 
     : base("name=CoreContext") 
    { 
    } 

    protected override void OnModelCreating(DbModelBuilder modelBuilder) 
    { 
     base.OnModelCreating(modelBuilder); 

     modelBuilder.Entity<IdentityUser>() 
      .ToTable("AspNetUsers"); 
     modelBuilder.Entity<ApplicationUser>() 
      .ToTable("AspNetUsers"); 
    } 
} 

Mein einziges Problem ist die IdentityRole

+0

Und Ihre Frage/Problem ist ... was genau? Bitte aktualisieren Sie Ihre Frage mit etwas mehr Details. –

+0

Mein Problem ist, ich kann die IdentityRole nicht erweitern. –

+0

@RamonCruz - wer sagt, dass Sie die IdentityRole nicht erweitern können? –

Antwort

3

zu tun versuchen Rolle zu verlängern Benutzer, Aktualisieren Sie Ihre ApplicationUser Klasse (in IdentityModels.cs) zu

public class ApplicationUser : IdentityUser 
{ 
    public async Task<ClaimsIdentity> 
     GenerateUserIdentityAsync(UserManager<ApplicationUser> manager) 
    { 
     var userIdentity = await manager 
      .CreateIdentityAsync(this, 
       DefaultAuthenticationTypes.ApplicationCookie); 
     return userIdentity; 
    } 

    public string Address { get; set; } 
    public string City { get; set; } 
    public string State { get; set; } 

    // Use a sensible display name for views: 
    [Display(Name = "Postal Code")] 
    public string PostalCode { get; set; } 

} 

zu erweitern, erstellen eine Klasse ApplicationRole.cs

public class ApplicationRole : IdentityRole 
{ 
    public ApplicationRole() : base() { } 
    public ApplicationRole(string name) : base(name) { } 
    public string Description { get; set; } 
} 

und die Klasse innerhalb IdentityConfig.cs Datei hinzufügen:

public class ApplicationRoleManager : RoleManager<ApplicationRole> 
{ 
    public ApplicationRoleManager(
     IRoleStore<ApplicationRole,string> roleStore) 
     : base(roleStore) 
    { 
    } 
    public static ApplicationRoleManager Create(
     IdentityFactoryOptions<ApplicationRoleManager> options, IOwinContext context) 
    { 
     return new ApplicationRoleManager(
      new RoleStore<ApplicationRole>(context.Get<ApplicationDbContext>())); 
    } 
} 

Löschen Sie jetzt die alte Datenbank, führen Sie die Anwendung aus und registrieren Sie einen Benutzer. Es wird 3 weitere Felder (Adresse, Stadt, Staat) in der AspNetUsers-Tabelle und ein weiteres Feld (Beschreibung) in der AspNetRoles-Tabelle erstellen. Das ist es.

Weitere Informationen finden Sie auf der Website: Extending Identity Role

+1

Hallo, hast du mehrere Mandanten eingegeben? Ich habe Probleme, Eigenschaften auf [Rollen] zu erweitern (http://stackoverflow.com/q/43269854/6085193) – transformer

Verwandte Themen