В настоящее время я разрабатываю веб-приложение с использованием Laravel, и приложение работает отлично до недавнего времени. Я понятия не имел, что вызвало это, но вот резюме проблемы, которую я имею:
Вход в систему используется, поскольку у меня есть AccountController, который делает это:
$auth = Auth::attempt(array( 'username' => Input::get('username'), 'password' => Input::get('password'), 'active'=>1); if ($auth) { return Redirect::route('home'); } return Redirect::route('account-sign-in');
И домашний маршрут выглядит так:
Route::get('/', array('as'=>'home', 'use'=>'HomeController@show'));
Приложение обычно возвращается на домашнюю страницу сразу после успешного входа в систему. И в моем home.blade.php у меня будет @if(Auth::check())
чтобы убедиться, что как только пользователь войдет в систему, главная страница будет обслуживать другой набор текстов.
Недавно, однако, я заметил, что после отправки запроса на вход в систему есть промежуточная страница с сообщением «Перенаправление на http://localhost.com/
». Сообщение не было до этого, и ошибки начали появляться вместе с этим сообщением.
Я просмотрел всю информацию, которую я могу сделать в Интернете, и кто-то предположил, что с исходным кодом были проблемы с разрывом строк. Я посмотрел на весь исходный код, который у меня был, и ничто не могло предположить, что что-то не так.
Отчаявшись в то время, я удалил Redirect :: route ('home') и заменил его на View :: make ('home'). Это остановило сообщение от показа, и я снова могу войти в систему, как обычно.
Поэтому у меня есть два вопроса: 1) что вызывает эту странную проблему? 2) есть ли что-то неправильное при использовании View :: make () в этом случае vs Redirect :: route ()?
Благодаря!
Я столкнулся с такой же проблемой и проведя весь уик-энд, чтобы найти фактическую причину и исправить эту проблему. Я приземлился на этот вопрос stackoverflow и почувствовал тот же вопрос, что и мой.
Я использовал следующую основную функцию php для перенаправления вместо возврата файла представления из контроллера.
header('Location: /');
Он напечатал фактический файл с пустой строкой. Удаление этой строки устранило мою проблему.
В моей базе кода было тысячи файлов. Мое предположение состояло в том, что я попытался использовать разные сценарии, чтобы найти такие пустые строки в начале любого файла, и не было такого файла, как в результатах этих сценариев. Я предположил, что нет пустых строк в любом из моих файлов. Но header ('Location: /') доказал, что мое предположение неверно, и я работал над неправильными строками.
Хотя не видя больше вашей настройки, будет сложно отладить, у вас есть ошибка в вашем маршруте ….
Route::get('/', array('as'=>'home', 'use'=>'HomeController@show'));
Должно быть:
Route::get('/', array('as'=>'home', 'uses'=>'HomeController@show'));
Обратите внимание на «использование», а не на «использование».
Кроме того, нет ничего плохого в использовании View :: make, однако его возможно не лучшая логика для использования, так как у пользователя будет отображаемый контент, который не соответствует URL-адресу. Лучшей практикой было бы перенаправить их, поскольку вы в настоящее время ….. Просто убедитесь, что маршрут для них ударил, как только перенаправлено.
У меня была та же проблема, проблема в том, что у меня было место в базовом контроллере перед тегом <?php