Направить пользователя в правильную область - PullRequest
0 голосов
/ 01 мая 2019

Когда пользователь входит в систему. Я ищу способ направить пользователя в правильную область, основываясь на его роли в личности.

Я пробовал:

  • У вас есть контроллер по умолчанию, который вы можете перенаправить в эту область return RedirectToAction("Index", "Dashboard", new { area = "Admin" });, но у меня есть несколько ролей.
  • Добавитьопция перезаписи в методе StartUp Configure.Что работает в начале, но если у вас есть ссылка на другую область - это не работает.
  • На контроллере по умолчанию я создал представление.Добавлена ​​бритва @if (User.Identity.IsAuthenticated && User.IsInRole("Admin")) else if().Затем между тегами if использовались теги <text> и <script> для вызова функции, которая перенаправила бы пользователя.Это не обеспечило ошибку, просто не сработало.Я подумал, что это не так, но ... пытаясь мыслить нестандартно

Спасибо за идеи!

1 Ответ

1 голос
/ 01 мая 2019

Если вы используете идентификацию ядра asp.net, в контроллере вы можете напрямую использовать var isInRole = User.IsInRole("Admin"), чтобы проверить, имеет ли текущий пользователь роль Admin.

Или использовать UserManager, чтобы получить текущего пользователя.и все его роли:

private readonly UserManager<IdentityUser> _userManager;
public HomeController(UserManager<IdentityUser> userManager)
{
    _userManager = userManager;
}

[Authorize(Roles = "Admin")]
public async Task<IActionResult> TestView()
{
    var user = await _userManager.GetUserAsync(HttpContext.User);

    var roles = await _userManager.GetRolesAsync(user);

    var matchingvalues = roles.SingleOrDefault(stringToCheck => stringToCheck.Equals("Admin"));
    if(matchingvalues != null)
    {
        return RedirectToAction("Index", "Dashboard", new { area = "Admin" });
    }

    return View();
}
...