6

Also versuche ich verschiedene Arten von Benutzern auf meine Anwendung zu implementieren, zunächst wollen wir sagen, dass es nur eine Art von Benutzer:Verschiedene Benutzertypen in ASP.Net Identity 2.0

public class ApplicationUser : IdentityUser 
{ 
    // Other Properties 
    public int TeacherID { get; set; } 

    [ForeignKey("TeacherID ")] 
    public virtual Teacher Teacher { get; set; } 
} 

public class Teacher 
{ 
    [Key] 
    public int TeacherID { get; set; } 
    public int UserID { get; set; } 
    // Other properties 

    [ForeignKey("UserID")] 
    public virtual ApplicationUser User { get; set; } 
} 

Es gibt eine Eins-zu eine Beziehung zwischen diesen 2 Entitäten, aber was ist, wenn es mehr als einen Benutzertyp gibt? Ich kann diesen ForeignKey nicht auf der User-Entity haben, ich glaube, ich gehe in die falsche Richtung.

Ich über die Verwendung von Rollen für diese, so gibt es ein Admin, ein Lehrer, ein Student und verschiedene Arten von Rollen für jede einzelne, aber was passiert, wenn ich zusätzliche Eigenschaften für jede Art von Rolle speichern möchte?

public class IdentityUserRole<TKey> 
{ 
    public IdentityUserRole(); 

    // Resumen: 
    //  RoleId for the role 
    public virtual TKey RoleId { get; set; } 
    // 
    // Resumen: 
    //  UserId for the user that is in the role 
    public virtual TKey UserId { get; set; } 
} 

Ich meine, kann ich die Klasse IdentityUserRole erweitern und mehr Eigenschaften hinzufügen, aber wie ich hinzufügen Eigenschaften für jede Art von Rolle?

+0

Sie können keiner Art von Rollen einzeln Eigenschaften hinzufügen. Alle Rollen enthalten alle Eigenschaften, die Sie in Ihre UserRole-Tabelle aufgenommen haben, da jede Eigenschaft eine Spalte ist. Sie können jedoch unterschiedlichen Rollen unterschiedliche Verantwortlichkeiten zuweisen. Oder Sie könnten eine anspruchsbasierte Authentifizierung verwenden. Überprüfen Sie diese Videos, um benutzerdefinierte Rollen zu erstellen. http://stackoverflow.com/questions/25857806/extending-identityuserrole-in-identity-2-0/25857923#25857923 – DSR

Antwort

4

Es ist sicherlich sinnvoll, Rollen für diesen Zweck zu verwenden, aber das bedeutet, dass Sie mehrere Rollen zuweisen können. So könnte ein Benutzer ein Lehrer und ein Schüler sein, aber das kann passieren.

Wenn Sie der Rollenklasse zusätzliche Eigenschaften hinzufügen möchten, geschieht dies auf die gleiche Weise wie für Benutzer. Erstellen Sie Ihre eigene Version von Role wie folgt aus:

public class ApplicationRole : IdentityRole 
{ 
    public string bool CanJuggle { get; set; } 
} 

Und Sie brauchen eine Rolemanager Klasse mit ihm zu gehen:

public class ApplicationRoleManager : RoleManager<ApplicationRole> 
{ 
    public ApplicationRoleManager(IRoleStore<ApplicationRole> store) 
     : base(store) 
    { } 

    //snip 
} 

Und nicht zu vergessen, Ihren Kontext ändern muss:

public class YourContext : IdentityDbContext<ApplicationUser, ApplicationRole, string, IdentityUserLogin, IdentityUserRole, IdentityUserClaim> 
{  
    //snip 
} 

Denken Sie, dass das alle relevanten Teile abdeckt.

+0

Ich bin immer noch verwirrt mit diesem. Ich möchte, dass jeder Benutzertyp unterschiedliche Eigenschaften speichert, so dass ich eine Lehrerrolle, eine Koordinatorrolle usw. haben kann und jeder seine Aufgabe hat. –