部署后Laravel登录无限循环


laravel login infinite loop after deployment

我正在使用Sentinel - https://github.com/rydurham/Sentinel - 来处理我的应用程序的用户身份验证,并将整个"admin"子域包含在路由中.php像这样包装:

Route::group([ "domain" => 'app.domain.dev', 'before' => 'Sentinel'auth' ], function()
{
    Route::group(array('prefix' => 'one'), function()
    {
        ...
    });
    Route::group(array('prefix' => 'two'), function()
    {
        ...
    });
    Route::get('/', array('as' => 'home', 'uses' => 'DashboardController@index'));
});

在本地计算机上,一切正常 - app.domain.dev 如果登录,则显示管理仪表板,如果未登录,则显示登录页面,而注销会将用户返回到登录页面。

但是,一旦通过 Forge 部署,如果未登录,app.domain.dev 会导致无限循环错误。然而,/login 仍然可以访问和工作 - 登录后,仪表板加载正常。如果用户注销,他们将再次遇到无限循环错误。

我不确定为什么这在本地工作而不是部署,但我猜这与位于"Sentinel''auth"过滤组中的"家"路由有关?

哨兵的身份验证过滤器:

Route::filter('Sentinel'auth', function()
{
    if (!Sentry::check()) return Redirect::guest(Config::get('Sentinel::config.routes.login'));
});

。config.routes.login 设置为"login"。

我理解这个问题的相似之处 - 在 laravel 中重定向循环 - 但让我感到困惑的是本地工作/中断部署。

有点解决了。正如链接所建议的,最简单(最黑客)的方法是从身份验证组中删除根 erm 路由:

Route::group([ "domain" => 'app.domain.dev' ], function()
{
    Route::group([ 'before' => 'Sentinel'auth' ], function()
    {
        Route::group(array('prefix' => 'one'), function()
        {
            ...
        });
        Route::group(array('prefix' => 'two'), function()
        {
            ...
        });
        Route::get('dashboard', array('as' => 'home', 'uses' => 'DashboardController@index'));
    });
    Route::get('/', function()
    {
        if(!Sentry::check()) return Redirect::to('login');
        elseif(Sentry::check()) return Redirect::to('dashboard');
    });
});

我相信有更优雅的解决方案,但我把它留在这里以防万一。