Авторизация в ASP. Net Core - PullRequest
0 голосов
/ 26 февраля 2020

Я занимаюсь разработкой панели панели администратора, я создал начальную страницу для панели управления, в которую пользователи могут войти, у меня есть четыре типа пользователей: Admin, SiteManager, PI и EndUser. После успешного входа в панель мониторинга! Я также использую область администратора для чего-то под названием «Управление контентом», которая доступна только для администратора, но когда я пытаюсь перейти к этому управлению контентом, он перенаправляет меня на вход (петли перенаправления авторизации), но пользователь уже вошел в систему (потому что я ставлю условие If, если роль пользователя - Admin, это показывает управление контентом)

Я использую индивидуальную аутентификацию и защищаю удостоверение личности ASP. Net core 3.1 Я не знаю, как решить эта проблема с перенаправлением!

ниже я поместил некоторый снип-код

[Authorize(Roles =SD.SuperAdmin)]
[Area("Admin")]
public class HMController : Controller
{
    private readonly ApplicationDbContext _context;

    public HMController(ApplicationDbContext context)
    {
        _context = context;
    }

примечание: предлагается, если условие находится на странице _layout, а в административной области используется другой макет (не _layout)! Кроме того, я уже проверил Sqlserver, роли и пользователь созданы и работают!

код _layout:

 @if (User.IsInRole(SD.SuperAdmin) || User.IsInRole(SD.ManagerUser))
                                {
                                    ...
                                                    @if (User.IsInRole(SD.SuperAdmin))
                                                    {
                                                        ..
                                                    }
                                               ...
                                }

1 Ответ

0 голосов
/ 26 февраля 2020

Если вы проверяете зарегистрированного пользователя на Login Action и там маршрутизируете пользователя по роли. Вы решаете эту проблему

if (User.Identity.IsAuthenticated)
        {
            if (GetUserType() == "Admin")
                return Redirect("Admin/Index");
            else if (GetUserType() == "Context")
                return Redirect("Context/Index");
        }

Например:

  • Если администратор вошел в систему, то если администратор нажмет не авторизованную страницу, перенаправьте учетную запись / логин.
  • учетная запись / Страница входа - проверка входа пользователя
  • Если пользователь вошел в систему, перенаправьте домашнюю страницу пользователя
...