【发布时间】:2017-03-11 16:08:29
【问题描述】:
我正在尝试为具有相同 URI 的授权用户(中间件身份验证)和来宾(中间件来宾)使用不同的控制器,但我无法让它在 laravel 5.3 中工作。
我尝试使用相同的 URI 和不同的中间件创建 2 条路由,但无法使用相同的 URI 创建 2 条路由。
我尝试了很多东西,但是在 laravel 5.3 中我不能在路由文件中使用Auth::check(),它总是会返回 false:
Route::get('/', [
'as' => 'home',
'uses' => (Auth::check() ? 'User\DashboardController' : 'Guest\HomeController'),
]);
我也试过在路由中使用一个函数:
Route::get('/', [
'as' => 'home',
'uses' => function (){
$app = app();
if(Auth::check()){
$controller = $app->make('App\Http\Controllers\User\DashboardController');
return $controller->callAction('getIndex', $parameters = []);
}else{
$controller = $app->make('App\Http\Controllers\Guest\HomeController');
return $controller->callAction('getIndex', $parameters = []);
}
}
]);
现在Auth::check() 主要工作,但现在控制器__construct 函数中的中间件被忽略。而且这看起来不太好。
当我从登录重定向到此路由 Auth::check() 返回 false 时,我也遇到了问题。但如果我刷新页面,它会返回 true。
我不想使用 1 个控制器并在该控制器中同时处理用户和来宾,这是因为我的用户控制器扩展了另一个类而不是我的来宾控制器。
有人知道我怎样才能有 1 条路由,一个用于访客的控制器和一个用于授权用户的不同控制器?
【问题讨论】:
标签: php laravel-routing laravel-5.3 laravel-authorization