Laravel 5.3 Пользовательский путь для перенаправления после аутентификации

У меня есть два типа пользователей: «продавцы» и «клиенты». И в настоящее время я использую Laravel's built-in Auth Controllers от Laravel's built-in Auth Controllers (из команды make:auth ), чтобы выполнить аутентификацию моего клиента.

И поскольку у меня есть два типа пользователей, я изменил свойство $redirectTo на LoginController , RegisterController и ResetPasswordController на /client/home .

Вот доказательство:

RegisterController LoginController

Теперь он перенаправляет на /client/home каждый раз, когда я успешно делаю регистрацию, логин и пароль.

Но проблема в том, что я уже в mysite.com/client/home , всякий раз, когда я пытаюсь перейти на mysite.com/register или mysite.com/login через адресную строку, он перенаправляет на mysite.com/home вместо mysite.com/client/home

Как я могу перенаправить его на mysite.com/client/home когда пользователь, mysite.com/client/home проверку подлинности, пытается перейти в /login или /register ?

Related of "Laravel 5.3 Пользовательский путь для перенаправления после аутентификации"

Самый простой вариант – создать отдельные контроллеры для обеих областей входа. После этого вам будет проще управлять, и вы можете немного улучшить поведение.

Структура папок по умолчанию выглядит так:

 app |__Http |__Controllers |__Auth |__ForgotPasswordController.php |__LoginController.php |__RegisterController.php |__ResetPasswordController.php 

Вы можете создать дополнительную папку для своих клиентских контроллеров, например:

 app |__Http |__Controllers |__Auth | |__ForgotPasswordController.php | |__LoginController.php | |__RegisterController.php | |__ResetPasswordController.php |__Client |__Auth |__ForgotPasswordController.php |__LoginController.php |__RegisterController.php |__ResetPasswordController.php 

Таким образом вы можете индивидуально настроить свойства $redirectTo для каждого контроллера.

В качестве альтернативного решения вы можете переписать redirectPath из свойства RedirectsUsers, создав метод redirectPath в ваших соответствующих контроллерах и вернув URL-адрес, который вам нужен:

 public function redirectPath() { if (\Request::is('client/*')) { return url('client/home'); } return url('home'); } 

Преимущество этого второго решения заключается в том, что вы можете возвращать действия контроллера и названные маршруты. Мне лично не нравится маршрутизация по URL-адресам, как будто я когда-либо решаю их изменить, тогда мне придется менять их везде. Использование действий контроллера кажется лучшей идеей, но вы можете столкнуться с той же проблемой, если позже будете реорганизовывать свой код. Я предпочитаю использовать именованные маршруты, так как я могу дать им разумное имя и никогда не менять их снова, но все же сохраняю все свои перенаправления в рабочем состоянии.