0

我已经为 fortrabbit 部署了一个 laravel 应用程序。部署的应用程序是一个简单的应用程序,仅用于测试身份验证和中间件(“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对于“身份验证”中间件:

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 中的任何文件/设置才能正确运行此应用程序吗?

4

2 回答 2

0

您的身份验证中间件对我来说很有吸引力。
如果来宾()这样做,如果不是来宾重定向到登录。如果您是不允许访客进入的页面上的访客,您不应该被重定向到登录吗?
您处于无限循环中,因为一旦您登录,您就不再是访客,因此您会被重定向到“家”,这会触发关闭的“身份验证”并将您重定向到登录,这会触发“访客”重定向您...

我认为你的身份验证中间件应该是这样的,来自Github 上的 Laravel

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);
}
于 2016-03-21T14:56:28.717 回答
0

config/cache.php使用 Fortrabbit 内存缓存配置(链接)修改后,我们不仅要更改文件的值,还要更改CACHE_DRIVER文件中的SESSION_DRIVERtomemcached.env

于 2016-03-30T09:24:58.077 回答