После небольшого исследования и с помощью другого человека мне удалось создать роль «Администратор» и назначить ее пользователю (мне был нужен только один администратор).Теперь у меня есть некоторые проблемы с перенаправлением входа на разные страницы, касающиеся роли пользователя.Я использую шаблон веб-сайта asp.net core 2.2 по умолчанию и аутентификацию, выбранную в качестве отдельной учетной записи пользователя.Вот мой метод CreateRole:
private async Task CreateUserRoles(IServiceProvider serviceProvider)
{
var roleManager = serviceProvider.GetRequiredService<RoleManager<IdentityRole>>();
var userManager = serviceProvider.GetRequiredService<UserManager<ApplicationUser>>();
IdentityResult roleResult;
//Adding Admin Role
var roleCheck = await roleManager.RoleExistsAsync("Admin");
if (!roleCheck)
{
//create the roles and seed them to the database
roleResult = await roleManager.CreateAsync(new IdentityRole("Admin"));
}
//Assign Admin role to the main User here we have given our newly registered
//login id for Admin management
ApplicationUser user = await userManager.FindByEmailAsync("example@gmail.com");
await userManager.AddToRoleAsync(user, "Admin");
}
А вот пост моего метода входа в систему с тем, что я пробовал до сих пор:
public async Task<IActionResult> OnPostAsync(string returnUrl = null)
{
returnUrl = returnUrl ?? Url.Content("~/");
if (ModelState.IsValid)
{
var result = await _signInManager.PasswordSignInAsync(Input.Email, Input.Password, Input.RememberMe, lockoutOnFailure: true);
var status = await _signInManager.UserManager.GetUsersInRoleAsync("Admin");
if (Input.Email.Contains(status.ToString()))
{
return LocalRedirect(returnUrl);
}
if (result.Succeeded)
{
_logger.LogInformation("User logged in.");
return LocalRedirect(returnUrl);
}
if (result.RequiresTwoFactor)
{
return RedirectToPage("./LoginWith2fa", new { ReturnUrl = returnUrl, RememberMe = Input.RememberMe });
}
if (result.IsLockedOut)
{
_logger.LogWarning("User account locked out.");
return RedirectToPage("./Lockout");
}
else
{
ModelState.AddModelError(string.Empty, "Invalid login attempt.");
return Page();
}
}
// If we got this far, something failed, redisplay form
return Page();
}