Laravel Nova Перенаправление на пользовательский путь после входа в систему - PullRequest
0 голосов
/ 23 января 2019

Мне нужно перенаправить пользователя после входа в другое место в соответствии с его ролью.

Логика проста. Я пытался включить его в функцию redirectPath() в Nova LoginController.php, но у меня очень странное поведение - иногда после входа в систему я попадаю в нужное место, иногда Nova перенаправляет меня на панель.

Есть идеи?

1 Ответ

0 голосов
/ 24 января 2019

После нескольких часов исследования я понял, что решение довольно простое.

Все, что мне нужно было сделать, это добавить следующую функцию в nova LoginController:

protected function sendLoginResponse(Request $request)
{
    $request->session()->regenerate();

    $this->clearLoginAttempts($request);

    $redirectPath = $this->redirectPath();
    redirect()->setIntendedUrl($redirectPath);

    return redirect()->intended($redirectPath);
}

Объяснение:

Эта функция реализована в trait AuthenticatesUsers.

intended функция (член класса Redirector) создает ответ перенаправления на основе ранее намеченного местоположения, а если не существует - на данный URL.

Если нет url.intendedво время сеанса пользователь будет перенаправлен на URL, сгенерированный LoginController::redirectPath. Однако , если в сеансе существует запись url.intended, нам нужно удалить ее, чтобы принудительно перенаправить пользователя на интересующий нас URL.

Единственная проблема, котораяЯ вижу, что мы теряем возможность перенаправления пользователя на ту же страницу, на которой он находился до того, как он вышел из системы.Так что это просто вопрос выбора как разработчика ...

...