Fortrabbit 中的重定向循环 Laravel 5.1
Redirect Loop Laravel 5.1 in Fortrabbit
我已经为 fortrabbit 部署了一个 laravel 应用程序。部署的应用程序是一个简单的应用程序,仅用于测试身份验证和中间件('auth' 和 'guest')。我已经在 localhost 中尝试了该应用程序,身份验证和中间件工作正常。当我在 fortrabbit 中尝试我的应用程序时,身份验证工作正常,但中间件存在问题。我得到
This webpage has a redirect loop, 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
用于 'guest' 中间件:
public function handle($request, Closure $next)
{
if ($this->auth->check()) {
return redirect('home');
}
return $next($request);
}
fortrabbit 中是否有任何 file/setting 我必须正确配置才能 运行 这个应用程序?
你的 auth 中间件让我讨厌。
如果 guest() 执行此操作,如果不是,则 guest 重定向到登录。如果您是不允许访客访问的页面上的访客,您是否应该被重定向到登录?
你处于无限循环中,因为一旦你登录,你就不再是访客,所以你被重定向到 'home',这会触发关闭的 'auth' 并重定向你登录,这会触发 'guest' 重定向你...
我认为你的 auth 中间件应该是这样的,来源来自 Laravel on 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);
}
在使用 Fortrabbit 内存缓存配置 (link) 修改 config/cache.php
后,我们不仅要将 CACHE_DRIVER
的值更改,还要将 SESSION_DRIVER
的值更改为 memcached
在 .env
文件中
我已经为 fortrabbit 部署了一个 laravel 应用程序。部署的应用程序是一个简单的应用程序,仅用于测试身份验证和中间件('auth' 和 'guest')。我已经在 localhost 中尝试了该应用程序,身份验证和中间件工作正常。当我在 fortrabbit 中尝试我的应用程序时,身份验证工作正常,但中间件存在问题。我得到
This webpage has a redirect loop, 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
用于 'guest' 中间件:
public function handle($request, Closure $next)
{
if ($this->auth->check()) {
return redirect('home');
}
return $next($request);
}
fortrabbit 中是否有任何 file/setting 我必须正确配置才能 运行 这个应用程序?
你的 auth 中间件让我讨厌。
如果 guest() 执行此操作,如果不是,则 guest 重定向到登录。如果您是不允许访客访问的页面上的访客,您是否应该被重定向到登录?
你处于无限循环中,因为一旦你登录,你就不再是访客,所以你被重定向到 'home',这会触发关闭的 'auth' 并重定向你登录,这会触发 'guest' 重定向你...
我认为你的 auth 中间件应该是这样的,来源来自 Laravel on 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);
}
在使用 Fortrabbit 内存缓存配置 (link) 修改 config/cache.php
后,我们不仅要将 CACHE_DRIVER
的值更改,还要将 SESSION_DRIVER
的值更改为 memcached
在 .env
文件中