【问题标题】:Laravel different controller for route if authenticated?如果经过身份验证,Laravel 路由的不同控制器?
【发布时间】:2013-06-17 23:09:01
【问题描述】:

我试过了:

Route::get('/', 'PageController@getIndex');
Route::group(array('before' => 'auth'), function(){
    Route::controller('/',            'HomeController'); 
});

但它总是需要登录。

我希望在登录时访问“/”时调用 PageController@getIndex,否则调用 HomeController (@getIndex)。

我知道我可以设置重定向,但我想只在路由中处理它。

【问题讨论】:

  • 是的,我不确定这种方式是否可行。您有两个位置分配给相同的路线位置,并声明您想要在到达该位置之前进行身份验证。您可以在主页中使用嵌套视图,并在登录视图之前需要 Auth::check() 以及正常主页或其他内容。否则我不知道您是否能够将 2 个单独的页面路由到同一位置。

标签: authentication routes laravel


【解决方案1】:

您需要设置自己的身份验证过滤器

if(!Auth::check()){
    return Route::get('/', 'PageController@getIndex');
} else {
    Route::controller('/',            'HomeController'); 
}

【讨论】:

  • 值得记住的是,如果您在 Laravel 的更高版本中使用路由缓存(我相信 5.1 及更高版本具有该功能),这将不起作用。
猜你喜欢
  • 1970-01-01
  • 2017-08-26
  • 2017-01-28
  • 2017-09-26
  • 1970-01-01
  • 1970-01-01
  • 2023-03-31
  • 2021-05-26
  • 2017-09-11
相关资源
最近更新 更多