Маршрутизация аутентификации Laravel 5.2

У меня проблема с маршрутизацией laravel.

Я хочу иметь такие маршруты:

/  - home page for unauthenticated users
/login  - login page
/register  - register page
/dashboard  - home page for authenticated users

После входа в систему я хочу, чтобы пользователь был перенаправлен на /dashboard, и если аутентифицированный пользователь переходит на / или любой другой незащищенный маршрут, я также хочу перенаправить его на /dashboard.

Мои маршруты.php.

`Route::get('/', 'HomeController@index');
 Route::group(['middleware' => 'web'], function () {


    Route::auth();

    Route::get(‘/dashboard’, ‘DashboardController@index');
    Route::get('/logout', 'Auth\AuthController@logout');


});`

Это работает, однако, если аутентифицированный пользователь переходит на / или любой другой незащищенный маршрут, я хотел бы перенаправить его на /dashboard. Как я могу заставить это работать?


person John    schedule 09.03.2016    source источник
comment
В вашем методе HomeController@index выполните проверку и перенаправьте пользователя Auth на панель инструментов. Auth::check() ? return redirect()->url('/dashboard') : '';   -  person Jilson Thomas    schedule 10.03.2016
comment
Спасибо, теперь работает.   -  person John    schedule 10.03.2016
comment
выложу как ответ   -  person Jilson Thomas    schedule 10.03.2016


Ответы (3)


Взято из документации Laravel.

Настройка пути

Когда пользователь успешно аутентифицирован, он будет перенаправлен на /URI. Вы можете настроить место перенаправления после аутентификации, определив свойство redirectTo в AuthController:

protected $redirectTo = '/home';

Если пользователь не прошел проверку подлинности, он будет автоматически перенаправлен обратно в форму входа в систему.

Подробнее здесь. https://laravel.com/docs/5.2/authentication#included-routing

person Flávio Rodrigues    schedule 09.03.2016

вам нужно установить ::

защищенный $redirectTo = '/ домой'

в AuthController, который переопределит переменную $redirectTo в свойстве, используемом AuthController.

Вы также можете изменить URL-адрес redirectAfterLogout таким же образом.

!!Счастливого кодирования.

person dpak005    schedule 10.03.2016
comment
Я добавил $redirectTo = /dashboard, и пользователь перенаправляется на /dashboard сразу после входа в систему, и это нормально. Я спрашиваю здесь, если пользователь после входа в систему переходит на какой-то общедоступный маршрут, я хочу перенаправить его на /dashboard. - person John; 10.03.2016
comment
вы можете создать промежуточное программное обеспечение для того же с логикой, как если бы Auth::check() перенаправлял на панель инструментов.. И это промежуточное программное обеспечение на маршруты.. - person dpak005; 11.03.2016

В вашем методе HomeController@index выполните проверку и перенаправьте пользователя Auth на панель инструментов. Auth::check() ? return redirect()->url('/dashboard') : '';

person Jilson Thomas    schedule 09.03.2016
comment
Если / является единственным незащищенным маршрутом, обрабатывающим это в HomeController@index, было бы хорошо, но нет никаких указаний на то, что это так, поэтому вместо этого ваше предложение должно быть обработано в промежуточном программном обеспечении. - person Bogdan; 10.03.2016
comment
@Bogdan Да, это правда, я хочу иметь возможность перенаправлять пользователя с любого маршрута. Как бы я справился с этим в промежуточном программном обеспечении? - person John; 10.03.2016