Я создал веб-приложение с ASP. NET Core 3.1 и angular с шаблоном Visual Studio и включенной аутентификацией.
Затем я построил Identity и добавил его в Startup.cs
:
services.AddDefaultIdentity<ApplicationUser>(options =>
options.SignIn.RequireConfirmedAccount = true)
.AddRoles<IdentityRole>().AddEntityFrameworkStores<ApplicationDbContext>();
services.AddIdentityServer().AddApiAuthorization<ApplicationUser, ApplicationDbContext>();
services.AddAuthentication().AddIdentityServerJwt();
После этого я создал 3 пользователей и назначил им разные роли. Когда я добавляю атрибут [Authorize]
к любому действию контроллера, он работает правильно. Но как сделать это ролевым? Я пробовал [Authorize(Roles = "Administrator")]
, но он отказал в доступе. В незащищенном методе:
var loggedinUser = await _userManager.FindByNameAsync(userid);
var roles = await _userManager.GetRolesAsync(loggedinUser);
в списке ролей есть администратор, поэтому я не знаю, что мне не хватает, чтобы он работал. Также внутри компонента Angular, как я могу получить роль текущего вошедшего в систему пользователя?