【问题标题】:Redirect Loop Laravel 5.1 in FortrabbitFortrabbit 中的重定向循环 Laravel 5.1
【发布时间】:2016-03-21 14:40:29
【问题描述】:

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

【问题讨论】:

  • 您的身份验证中间件看向我。如果来宾()这样做,如果不是来宾重定向到登录。如果您是不允许访客进入的页面上的访客,您不应该被重定向到登录吗?您处于无限循环中,因为一旦您登录,您就不再是访客,因此您会被重定向到“家”,这会触发关闭的“身份验证”并将您重定向到登录,这会触发“访客”重定向您...
  • 您好,我认为这是一个会话错误github.com/laravel/framework/issues/8172 您可以再次尝试全新安装吗?兔子堡中设置的会话驱动程序是什么?

标签: php laravel laravel-5 fortrabbit


【解决方案1】:

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

我觉得你的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);
}

【讨论】:

  • 我把else语句改成了return redirect()->guest('/login');,结果还是一样
  • @neemo 你能上传 Authenticate.php 文件吗,我认为问题是括号放错了。
  • 我已将带有更新的 Authenticate.php(上面已更新)的应用重新上传到 mylara.frb.io,但仍未解决。
  • @neemo,我的意思是上传它,以便我可以下载并检查 Authenticate.php 文件
  • 你可以下载它here
【解决方案2】:

在使用 Fortrabbit 内存缓存配置 (link) 修改 config/cache.php 后,我们不仅要更改 CACHE_DRIVER 的值,还要将 SESSION_DRIVER 文件中的 SESSION_DRIVER 更改为 memcached

【讨论】:

    猜你喜欢
    • 2014-06-02
    • 2017-02-11
    • 1970-01-01
    • 2015-08-04
    • 2018-04-24
    • 2015-03-17
    • 2015-11-09
    • 2015-09-02
    • 2015-02-15
    相关资源
    最近更新 更多