[ Полезный рекламный блок ]
Попробуйте свои силы в игре, где ваши навыки программирования на C# станут решающим фактором. Переходите по ссылке 🔰.
ASP.NET Core надає вбудований механізм для реалізації авторизації на основі ролей. Нижче описано кроки зі створення ролей і призначення їх користувачам в ASP.NET Core:
1. Налаштування Identity.
Визначте конфігурацію Identit, у файлі Program.cs:
1 2 3 |
builder.Services.AddIdentity<IdentityUser, IdentityRole>() .AddEntityFrameworkStores<ApplicationDbContext>() .AddDefaultTokenProviders(); |
2. Визначте ролі.
Визначте ролі, які ви хочете використовувати у своєму додатку. Ви можете визначити ролі в будь-якому класі, таким чином:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
public static async Task InitializeAsync(UserManager<User> userManager, RoleManager<IdentityRole> roleManager) { if (await roleManager.FindByNameAsync("Admin") == null) { await roleManager.CreateAsync(new IdentityRole("Admin")); } if (await roleManager.FindByNameAsync("Editor") == null) { await roleManager.CreateAsync(new IdentityRole("Editor")); } if (await roleManager.FindByNameAsync("Client") == null) { await roleManager.CreateAsync(new IdentityRole("Client")); } |
Після чого, викликати метод вашого класу в класі Program.cs, передавши туди необхідні залежності:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
using (var scope = app.Services.CreateScope()) { var services = scope.ServiceProvider; try { var userManager = services.GetRequiredService<UserManager<User>>(); var rolesManager = services.GetRequiredService<RoleManager<IdentityRole>>(); await DbInit.InitializeAsync(userManager, rolesManager); } catch (Exception ex) { var logger = services.GetRequiredService<ILogger<Program>>(); logger.LogError(ex, "An error occurred while seeding the database."); } } |
3. Створення користувачів і призначення ролей.
Створіть користувачів у вашому додатку і призначте їм ролі. Ви можете зробити це у своєму контролері або в класі служби. Ось приклад:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
public async Task<IActionResult> Register(RegisterViewModel model) { if (ModelState.IsValid) { var user = new ApplicationUser { UserName = model.Email, Email = model.Email }; var result = await _userManager.CreateAsync(user, model.Password); if (result.Succeeded) { await _userManager.AddToRoleAsync(user, "Admin"); return RedirectToAction("Index", "Home"); } } return View(model); } |
У наведеному вище прикладі ми створюємо нового користувача і призначаємо йому роль “Admin”.
4 Авторизація користувачів на основі їхніх ролей.
Використовуйте атрибут [Authorize] для обмеження доступу до дій контролера на основі ролі користувача. Ось приклад:
1 2 3 4 5 |
[Authorize(Roles = "Admin")] public class AdminController : Controller { // ... } |
У прикладі вище ми обмежуємо доступ до контролера AdminController для користувачів із роллю “Admin“.
Ось і все! За допомогою цих кроків ви можете легко створювати ролі та призначати їх користувачам в ASP.NET Core.
Я сподіваюся, що вам сподобалося читати цю статтю, і вона виявилася легкою для розуміння. Будь ласка, дайте мені знати, якщо у вас є якісь коментарі або виправлення.
Так само вам може бути цікава попередня стаття – Різниця між AddTransient, AddScoped і AddSingleton.
Ви хочете навчитися писати код мовою програмування C#?
Створювати різні інформаційні системи, що складаються з сайтів, мобільних клієнтів, десктопних додатків, телеграм-ботів тощо.
Переходьте до нас на сторінку Dijix і ознайомтеся з умовами навчання, ми спеціалізуємося тільки на індивідуальних заняттях, як для початківців, так і для просунутих програмістів. Ви можете взяти як одне заняття для опрацювання питання, що вас цікавить, так і кілька, для більш щільної роботи. Завдяки особистому кабінету, кожен студент підвищить якість свого навчання, у вашому розпорядженні:
- Доступ до пройденого матеріалу
- Тематичні статті
- Бібліотека книг
- Онлайн тестування
- Спілкування в закритих групах