2014-10-20 37 views
6

Yani, en kullanıcının yalnızca bir tür var diyelim, önce benim uygulamanın kullanıcıların farklı tür uygulamaya çalışıyorum Bu iki varlık arasında bir ilişki, ancak birden fazla kullanıcı türü varsa ne olur? Kullanıcı tarafına o yabancı ceylanı alamıyorum, sanırım yanlış yöne gidiyorum.Farklı kullanıcı türleri 2.0

Bunun için rolleri kullanmakla birlikte, bir Yönetici, Öğretmen, Öğrenci ve her biri için farklı roller vardır, ancak her bir rol için ekstra özellikler depolamak istiyorsam ne olur?

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

ben sınıf IdentityUserRole genişletmek ve daha fazla mülk ekleyebilir tabii ama nasıl rolünün her türlü özelliklerini eklerim?

+0

Her tür rol için ayrı ayrı özellik ekleyemezsiniz. Tüm roller bir sütun olacak, ancak farklı roller için farklı sorumluluklar atayabilirsiniz, tüm roller UserRole tablonuza dahil ettiğiniz tüm özellikleri içerecektir. Veya Hak talebine dayalı kimlik doğrulamayı kullanabilirsiniz. Özel roller oluşturmak için bu videoları kontrol edin. http://stackoverflow.com/questions/25857806/extending-identityuserrole-in-identity-2-0/25857923#25857923 – DSR

cevap

4

Bu amaç için rolleri kullanmak kesinlikle mantıklıdır, ancak birden fazla rol atayabileceğiniz anlamına gelir. Böylece bir kullanıcı bir Öğretmen ve Öğrenci olabilir, ancak bu olabilir.

Rol sınıfına fazladan özellikler eklemek isterseniz, kullanıcı için yapıldığı gibi yapılır. Böyle Role kendi sürümünü oluşturun:

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

Ve onunla gitmek için bir roleManager sınıfını gerekir:

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

    //snip 
} 

Ve, içerik değiştirmek gerekiyor unutmadan:

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

Bütün ilgili parçaları kapsayan düşünün.

+0

Hala bununla karıştırıldım. Her bir kullanıcının farklı mülkleri depolamasını istiyorum, böylece bir Öğretmen rolüne, bir Koordinatör rolüne vb. Sahip olabilirim ve her birinin görevi vardır. –

İlgili konular