nynceHb
@nynceHb

Почему не работает проверка роли пользователя во View ASP.NET Core MVC + Identity?

Делаю сайт на ASP.NET Core MVC + Microsoft Identity. Добавляю роль админа и пользователя-админа в методе OnModelCreating класса контекста:
protected override void OnModelCreating(ModelBuilder builder)
        {
            base.OnModelCreating(builder);

            builder.Entity<IdentityRole>().HasData(new IdentityRole
            {
                Id = "6b7bf0ac-b815-455a-8908-8133983c9200",
                Name = "admin",
                NormalizedName = "ADMIN"
            });

            builder.Entity<Visitor>().HasData(new Visitor
            {
                Id = "aa6c0c49-3d13-433f-bc24-fcf769b6e6e7",
                UserName = "admin@email.com",
                NormalizedUserName = "ADMIN@EMAIL.COM",
                Email = "admin@email.com",
                NormalizedEmail = "ADMIN@EMAIL.COM",
                EmailConfirmed = true,
                PasswordHash = new PasswordHasher<IdentityUser>().HashPassword(null, "superpassword"),
                SecurityStamp = string.Empty,
                ConcurrencyStamp = string.Empty,
            });

            builder.Entity<IdentityUserRole<string>>().HasData(new IdentityUserRole<string>
            {
                RoleId = "6b7bf0ac-b815-455a-8908-8133983c9200",
                UserId = "aa6c0c49-3d13-433f-bc24-fcf769b6e6e7"
            });
        }

и затем делаю миграцию.

В Indext.cshtml проверяю роль пользователя:
@if (User.IsInRole("admin")) 
{
    <a asp-action="Edit" asp-route-id="@movie.Id">Edit</a>
    <span>|</span>
    <a asp-action="Delete" asp-route-id="@movie.Id">Delete</a>
}


После авторизации User.IsInRole все равно возвращает false, хотя данные в БД имеются. Может я что-то упускаю или в корне делаю не правильно. Заранее спасибо
  • Вопрос задан
  • 99 просмотров
Решения вопроса 1
nynceHb
@nynceHb Автор вопроса
После нескольких часов гуглежки и использования чат гпт нашел ответ:
builder.Services
                .AddDefaultIdentity<Visitor>(options => 
                {
                    options.SignIn.RequireConfirmedAccount = false;
                    options.Password.RequireDigit = false;
                    options.Password.RequireNonAlphanumeric = false;
                    options.Password.RequiredLength = 4;
                })
                .AddRoles<IdentityRole>() // <--- Нужно всего лишь добавить эту строку
                .AddEntityFrameworkStores<CinemaDbContext>();
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы