Я уже несколько дней пытаюсь реализовать роли в проекте MVC. Я запустил новый проект и выбрал Аутентификацию в «Индивидуальная учетная запись пользователя». Я добавил [Authorize] на главную страницу HomeControllers, и все работает. Чтобы добавить роль, я включил:
services.AddDefaultIdentity<IdentityUser>().AddRoles<IdentityRole>().AddEntityFrameworkStores<ApplicationDbContext>();
в startup.cs -> ConfigureServices
а затем добавил вызов для следующих функций из автозагрузки-> Конфигурировать
private async Task CreateRole(IServiceProvider serviceProvider)
{
var RoleManager = serviceProvider.GetRequiredService<RoleManager<IdentityRole>>();
IdentityResult roleResult;
roleResult = await RoleManager.CreateAsync(new IdentityRole("Admin"));
}
private async Task SetUserAdmin(string username, IServiceProvider serviceProvider)
{
var UserManager = serviceProvider.GetRequiredService<UserManager<IdentityUser>>();
IdentityUser user = await UserManager.FindByEmailAsync(username);
await UserManager.AddToRoleAsync(user, "Admin");
}
это создаст роль «Администратор» и свяжет ее с конкретным пользователем.
Когда я смотрю на таблицу в БД через:
select * from AspNetRoles
select * from AspNetUsers
select * from AspNetUserRoles
Таблицы заполнены и связаны друг с другом, но когда я использую [Authorize (Roles = "Admin")], появляется страница 401 ошибки, но когда я зачитываю роли для пользователя через:
var roles = await UserManager.GetRolesAsync(await UserManager.FindByEmailAsync(username));
Будет возвращено значение «Администратор».
В чем может быть проблема?
Большое спасибо за любые предложения!