Я развернул приложение Laravel для Fortrabbit. Развернутое приложение — это простое приложение, предназначенное только для проверки аутентификации и промежуточного программного обеспечения («auth» и «guest»). Я попробовал приложение в localhost, аутентификация и промежуточное ПО работали нормально. Когда я попробовал мое приложение в fortrabbit, аутентификация работала правильно, но была проблема с промежуточным ПО. я получил
Эта веб-страница имеет цикл перенаправления, ERR_TOO_MANY_REDIRECTS
каждый раз, когда я захожу на домашнюю страницу.
routes.php
:
Route::get('/','UserController@getIndex');
Route::group(['middleware' => 'guest'], function() {
Route::get('login','UserController@getLogin');
Route::post('login','UserController@postLogin');
Route::get('register','UserController@getRegister');
Route::post('register','UserController@postRegister');
});
Route::group(['middleware' => 'auth'], function() {
Route::get('home','MainController@getHome');
Route::get('logout','MainController@logout');
});
Authenticate.php
для промежуточного программного обеспечения ‘auth’:
public function handle($request, Closure $next)
{
if ($this->auth->guest()) {
if ($request->ajax()) {
return response('Unauthorized.', 401);
} else{
return redirect()->guest('/login');
}
return $next($request);
}
RedirectIfAuthenticated.php
для «гостевого» промежуточного программного обеспечения:
public function handle($request, Closure $next)
{
if ($this->auth->check()) {
return redirect('home');
}
return $next($request);
}
Есть ли какие-либо файлы / настройки в fortrabbit, которые я должен настроить, чтобы правильно запустить это приложение?
Ваше промежуточное программное обеспечение выглядит мне.
Если guest () делает это, если нет guest перенаправить на логин. Разве вы не должны быть перенаправлены для входа, если вы являетесь гостем на странице, где гости не допускаются?
Вы находитесь в бесконечном цикле, потому что, как только вы войдете в систему, вы больше не будете гостем, поэтому вы будете перенаправлены на «home», который вызывает отключенный «auth» и перенаправляет вас на вход, который вызывает «guest», который перенаправляет вас …
Я думаю, что ваше промежуточное ПО должно выглядеть следующим образом, источник из Laravel на Github
public function handle($request, Closure $next)
{
if ($this->auth->guest()) {
if ($request->ajax()) {
return response('Unauthorized.', 401);
} else {
return redirect()->guest('auth/login');
}
}
return $next($request);
}
После модификации config/cache.php
с конфигурацией memcache в Fortrabbit (ссылка на сайт), мы должны изменить не только значение CACHE_DRIVER
но также SESSION_DRIVER
в memcached
в .env
файл