Как я могу добавить третий атрибут в моей таблице ролей пользователей? - PullRequest
0 голосов
/ 17 февраля 2019

мы используем роль пользователя на основе авторизации в нашем проекте.нам нужно добавить атрибут в нашу таблицу (таблицу ролей пользователей), в результате чего у пользователя будет роль при создании этого атрибута.например, мы хотим сказать, что пользователь A в местоположении X имеет особую роль, но тот же пользователь в местоположении Y имеет другие роли.(с использованием ядра .net)

Ответы [ 3 ]

0 голосов
/ 19 февраля 2019

Если вы хотите, чтобы у пользователя было несколько ролей, вы можете добавить класс ApplicationRole, который наследует IdentityRole, и изменить отношение между ApplicationUser и ApplicationRole на один-ко-многим см. следующее:

Класс ApplicationRole

 public class ApplicationRole:IdentityRole
{
    public string Location { get; set; }//add the stuff you want
    public ApplicationUser ApplicationUser { get; set; }
}

Класс ApplicationUser

 public class ApplicationUser:IdentityUser
{
    public List<ApplicationRole> ApplicationRoles { get; set; }
}

Настройка отношения один-ко-многим в Fluent API

public DbSet<ApplicationUser> ApplicationUser { get; set; }
public DbSet<ApplicationRole> ApplicationRole { get; set; }

protected override void OnModelCreating(ModelBuilder builder)
    {
        builder.Entity<ApplicationUser>()
                .HasMany(u => u.ApplicationRoles)
                .WithOne(r => r.ApplicationUser);
    }
0 голосов
/ 27 февраля 2019

Вместо изменения таблицы ролей для этой настройки существует специальная таблица, называемая таблицей утверждений пользователя.Здесь вы можете назначать новые и разные атрибуты пользователям.Роли - это просто еще одна заявка пользователя в ASP.NET Core Identity, которая будет автоматически преобразована в заявки пользователя.Определите новую заявку пользователя (companyB, attrX), (companyA, attrZ).Затем определите новую Политику авторизации, чтобы использовать ее.Вот несколько официальных документов о пользовательских требованиях и пользовательских политиках .

0 голосов
/ 17 февраля 2019

Проверьте следующее:

public class ApplicationUserRole : IdentityUserRole<string>
{
    public virtual ApplicationUser User { get; set; }
    public virtual ApplicationRole Role { get; set; }
    public string MyProperty { get; set; }
}

Ссылка здесь

...