[ Полезный рекламный блок ]
Попробуйте свои силы в игре, где ваши навыки программирования на 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 и ознакомьтесь с условиями обучения, мы специализируемся только на индивидуальных занятиях, как для начинающих, так и для более продвинутых программистов. Вы можете взять как одно занятие для проработки интересующего Вас вопроса, так и несколько, для более плотной работы. Благодаря личному кабинету, каждый студент повысит качество своего обучения, в вашем распоряжении:
- Доступ к пройденному материалу
- Тематические статьи
- Библиотека книг
- Онлайн тестирование
- Общение в закрытых группах
Живи в своем мире, программируй в нашем.