我正在使用 Sentinel - https://github.com/rydurham/Sentinel - 来处理我的应用程序的用户身份验证,并将 routes.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”过滤组内的“home”路由有关?
Sentinel 的身份验证过滤器:
Route::filter('Sentinel\auth', function()
{
if (!Sentry::check()) return Redirect::guest(Config::get('Sentinel::config.routes.login'));
});
...并且 config.routes.login 设置为“登录”。
我理解这个问题的相似之处——laravel 中的重定向循环——但让我感到困惑的是本地工作/损坏的部署。