6

Итак, я пытаюсь реализовать различные виды пользователей по моему заявлению, первый, скажем, есть только один вид пользователя:Различные типы пользователей в ASP.Net Идентичность 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; } 
} 

Там в один ко одна связь между этими двумя объектами, но что, если есть более одного типа пользователей? У меня не может быть этого ForeignKey на объекте User, я думаю, что я пойду в неправильном направлении.

Я хотя бы об использовании ролей для этого, поэтому для каждого есть админ, учитель, ученик и разные роли, но что произойдет, если я хочу сохранить дополнительные свойства для каждой роли?

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

Я имею в виду, я могу расширить класс IdentityUserRole и добавить дополнительные свойства, но как я могу добавить свойства для каждого вида роли?

+0

Вы не можете добавлять свойства к каждому виду ролей отдельно. Все роли будут содержать все свойства, которые вы включили в свою таблицу UserRole, поскольку каждое свойство будет столбцом, но вы можете назначить разные обязанности для разных ролей. Или вы можете использовать проверку подлинности на основе утверждений. Проверьте эти ролики, чтобы создать пользовательские роли. http://stackoverflow.com/questions/25857806/extending-identityuserrole-in-identity-2-0/25857923#25857923 – DSR

ответ

4

Конечно, имеет смысл использовать роли для этой цели, но это означает, что вы можете назначить несколько ролей. поэтому пользователь может быть Учителем и Студентом, но это может произойти.

Если вы хотите добавить дополнительные свойства в класс ролей, это делается так же, как и для пользователя. Создайте свою собственную версию Role так:

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

И вам нужен класс RoleManager, чтобы пойти с ним:

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

    //snip 
} 

И не забывая при этом ваш контекст должен изменить:

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

Подумайте, что охватывает все соответствующие части.

+0

Я все еще смущен этим. Я хочу, чтобы каждый тип пользователя сохранял разные свойства, поэтому я могу иметь роль Учителя, роль координатора и т. Д., И каждый из них имеет свою задачу. –

Смежные вопросы