2014-10-20 20 views
6

Quindi, sto cercando di attuare diversi tipi di utenti relativa alla mia domanda, prima, diciamo che c'è un solo tipo di utente:diversi tipi di utente 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; } 
} 

C'è uno a una relazione tra queste 2 entità, ma cosa succede se c'è più di un tipo di utente? Non posso avere quel ForeignKey sull'entità User, penso che vada nella direzione sbagliata.

Ho pensato di utilizzare i ruoli per questo, quindi c'è un amministratore, un insegnante, uno studente e diversi tipi di ruoli per ognuno, ma cosa succede se voglio memorizzare proprietà aggiuntive per ogni tipo di ruolo?

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; } 
} 

voglio dire, posso estendere la classe IdentityUserRole e aggiungere più proprietà, ma come faccio ad aggiungere proprietà per ogni tipo di ruolo?

+0

Non è possibile aggiungere proprietà a ciascun tipo di ruolo separatamente. Tutti i ruoli conterranno tutte le proprietà incluse nella tabella UserRole in quanto ciascuna proprietà sarà una colonna, ma è possibile assegnare responsabilità diverse a ruoli diversi. Oppure è possibile utilizzare l'autenticazione basata sulle attestazioni. Controlla questi video per creare ruoli personalizzati. http://stackoverflow.com/questions/25857806/extending-identityuserrole-in-identity-2-0/25857923#25857923 – DSR

risposta

4

Ha sicuramente senso utilizzare i ruoli per questo scopo, ma significa che è possibile assegnare più ruoli. quindi un utente potrebbe essere un insegnante e uno studente, ma ciò può accadere.

Se si desidera aggiungere proprietà aggiuntive alla classe di ruolo, l'operazione viene eseguita nello stesso modo in cui viene eseguita per l'utente. Creare la propria versione di Role come questo:

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

E avete bisogno di una classe RoleManager di andare con lui:

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

    //snip 
} 

E non dimenticare il tuo contesto ha bisogno di cambiare:

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

Pensa che copre tutte le parti rilevanti.

+0

Sono ancora confuso con questo. Voglio che ogni tipo di utente memorizzi proprietà diverse, quindi posso avere un ruolo di insegnante, un ruolo di coordinatore, ecc. E ognuno ha il suo compito. –

Problemi correlati