部署后laravel登录无限循环

Posted

技术标签:

【中文标题】部署后laravel登录无限循环【英文标题】:laravel login infinite loop after deployment 【发布时间】:2015-01-24 00:28:49 【问题描述】:

我正在使用 Sentinel - https://github.com/rydurham/Sentinel - 为我的应用处理用户身份验证,并将 routes.php 中的整个 'admin' 子域打包如下:

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”过滤组内的“home”路由有关?

Sentinel 的身份验证过滤器:

Route::filter('Sentinel\auth', function()

    if (!Sentry::check()) return Redirect::guest(Config::get('Sentinel::config.routes.login'));
);

...并且 config.routes.login 设置为“登录”。

我理解这个问题的相似之处 - Redirect loop in laravel - 但让我感到困惑的是本地工作/损坏的部署。

【问题讨论】:

您好,您的应用中定义了不同的环境吗?因为如果您在本地设置和生产设置之间遇到这种差异,这可能就是原因。 我知道,是的——分别是本地和生产——但我看不出在哪里会干扰路由或 Sentinel/auth。我还尝试在部署的服务器上将生产环境重命名为本地(复制必要的数据库详细信息等),但没有效果。 【参考方案1】:

有点解决了。正如链接所建议的,最简单(hackiest)的方法是从 auth 组中删除根、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');
    );
);

我确信还有更优雅的解决方案,但我将其留在这里以防万一。

【讨论】:

以上是关于部署后laravel登录无限循环的主要内容,如果未能解决你的问题,请参考以下文章

Laravel 邮件队列无限循环异常

Laravel REST API - 无限循环

第一次成功登录 MVC .NET 5 OWIN ADAL OpenIDConnect 后,第二次登录导致无限重定向循环

laravel Job / Queue未被处理奇怪的无限循环

理解 vue-router的beforeEach无限循环的问题

PHPMyAdmin 单点登录身份验证无限重定向循环