Laravel 4.2路由过滤器根URI的身份验证/来宾错误


Laravel 4.2 routing filters auth/guest error for root URI

我正在尝试根据用户身份验证将单个 URI 路由到多个控制器。本质上,如果用户未登录并且他们点击了根 URI,则显示通用登录页面,否则,如果他们已登录并访问根 URI,则显示其个性化内容。

我正在使用标准的开箱即用过滤器(身份验证/来宾)和其他一些路由(此处未显示),这些路由已设置为快速身份验证/取消身份验证进行测试。

这个想法似乎很简单,在我看来它应该有效,但 Laravel 没有正确处理这个问题:

Route::group(array('before' => 'auth'), function() {
    Route::get('/', function() { echo 'logged in'; });
});
Route::group(array('before' => 'guest'), function() {
    Route::get('/', function() { echo 'logged out'; });
});

不管我按什么顺序排列这些,当用户进行身份验证时,Laravel都不会确认身份验证过滤器。跳过第一个路由,来宾筛选器首先运行,或者仅运行(可能更准确)。

我是否错误地更改了其中一个过滤器中的某些内容?为什么会这样?这不应该顺利进行吗?

似乎Laravel无法处理要测试的多个操作的分配给单个URI。我不是特别想花时间挖掘代码库来找出问题所在。在我看来,这是框架本身的一个糟糕的设计决策,尽管如果是这种情况,它将解释这里的问题。

我需要进行健全性检查,请。

应该是

这个

Route::group(array('before' => 'guest|auth'), function() {
    Route::get('/', function() { 
        if(Auth::check()) {
            return "logged in";
        }
        return 'logged out';
    });
});

一个 URI 的多个控制器操作有什么意义?我很困惑。一个 URI 仅由一个Controller 的操作提供服务。否则,它会变干,IMO。