Php Laravel 4.2路由筛选器根URI的身份验证/来宾错误
我正试图根据用户身份验证将一个URI路由到多个控制器。本质上,如果用户未登录并且点击根URI,则显示通用登录页;否则,如果用户登录并访问根URI,则显示其个性化内容 我正在使用标准的开箱即用过滤器(auth/guest)和一些其他路由(此处未显示),这些路由已设置为快速进行测试的auth/deauth 这个想法似乎足够直截了当,而且在我看来应该可行,但拉雷维尔没有正确处理这个问题: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() {
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有多个状态,这取决于用户身份验证,因此有多个操作。我进一步将其抽象为多个控制器,一个用于注销(登录页面和接待区),另一个用于登录(个性化内容)。我将选择您的答案,因为没有其他人响应,谢谢:)