Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/267.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Laravel 4.2路由筛选器根URI的身份验证/来宾错误_Php_Laravel 4_Laravel Routing - Fatal编程技术网

Php Laravel 4.2路由筛选器根URI的身份验证/来宾错误

Php Laravel 4.2路由筛选器根URI的身份验证/来宾错误,php,laravel-4,laravel-routing,Php,Laravel 4,Laravel Routing,我正试图根据用户身份验证将一个URI路由到多个控制器。本质上,如果用户未登录并且点击根URI,则显示通用登录页;否则,如果用户登录并访问根URI,则显示其个性化内容 我正在使用标准的开箱即用过滤器(auth/guest)和一些其他路由(此处未显示),这些路由已设置为快速进行测试的auth/deauth 这个想法似乎足够直截了当,而且在我看来应该可行,但拉雷维尔没有正确处理这个问题: Route::group(array('before' => 'auth'), function() {

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

我正在使用标准的开箱即用过滤器(auth/guest)和一些其他路由(此处未显示),这些路由已设置为快速进行测试的auth/deauth

这个想法似乎足够直截了当,而且在我看来应该可行,但拉雷维尔没有正确处理这个问题:

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仅由一个
控制器的操作提供服务。否则,它会变得干燥。

是的,我已经知道这一点,但试图避免路由文件中的逻辑。当然,其思想是根URI有多个状态,这取决于用户身份验证,因此有多个操作。我进一步将其抽象为多个控制器,一个用于注销(登录页面和接待区),另一个用于登录(个性化内容)。我将选择您的答案,因为没有其他人响应,谢谢:)