Laravel根据身份验证状态显示页面

时间:2014-12-16 13:15:38

标签: php laravel routing

我有什么方法可以在routes.php中执行此配置:

Route::get('/', function(){
if ( Auth::check() === FALSE ) 
 {
   return homeController@guest<--- Specific Controller's method
 } 
 else 
 {
   return homeController@logged <--- Specific Controller's method
 } 
});

我不想使用重定向,因为我想将mysite.com/作为主要地址。

3 个答案:

答案 0 :(得分:2)

当然你可以直接在@Ferticidios回答的路线上做所有事情,或者只有像@maytham建议的那样的控制器方法。但你也可以完全按照你的要求去做:

Route::get('/', function(){
    if ( Auth::check() === FALSE ) 
    {
        return App::make('homeController')->callAction('guest', array());
    } 
    else 
    {
        return App::make('homeController')->callAction('logged', array());
    } 
});

答案 1 :(得分:1)

您可以这样做:

Route::get('/', function(){
    if ( Auth::check() === FALSE ) 
    {
       //Do stuff... get data 
       return Response::view('guest')->with($data);
    } 
    else 
    {
       //Do stuff... get data
       return Response::view('logged')->with($data);
    } 
});

答案 2 :(得分:1)

这是Laravel设计的过滤器。内置的Auth已经存在,或者您可以创建自己的

Route::get('user', array('before' => 'auth', function()
{
    return App::make('homeController')->callAction('logged');
}));

可以在 app / filters.php

中调整默认过滤器

http://laravel.com/docs/4.2/routing#route-filters