所以我想要实现某些目标,这似乎是不可能的。我希望我的应用程序中的一些路由使用基于用户角色的不同控制器。这是我正在尝试的方法,但它不能很好地工作。用户路由工作,但管理员路由返回和TryCs获取VerifyCsrfToken.php文件中的非对象错误属性*
Route::group(array('middleware' => 'isAdmin'), function() {
Route::get('/', 'Admin\TestController@getIndex');
});
Route::group(array('middleware' => 'isUser'), function() {
Route::get('/', 'User\TestController@getIndex');
});
我的中间件
public function handle($request, Closure $next)
{
if(Auth::user()->isAdmin()) {
return $next($request);
}
}
public function handle($request, Closure $next)
{
if(Auth::user()->isUser()) {
return $next($request);
}
}
我见过一些处理这种情况,只是在控制器中处理这个,甚至检查路由文件中的使用角色,但我宁愿使用middlwares,所以我的路由文件会更干净
答案 0 :(得分:0)
您可以这样做:
Route::get('/', function () {
if (auth()->check()) {
if (auth()->user()->isAdmin()) {
return redirect()->route('');
} elseif (auth()->user()->isUser()) {
return redirect()->route();
} else {
return view('index');
}
}
return redirect()->to('login');
});
答案 1 :(得分:0)
错误消息可能与您的节目代码无关。
但是在一条路线上使用多个控制器是不可能的,我曾经问过同一个问题。
但您可以使用一个控制器并在该控制器中处理授权。
例如:
public function getIndex()
{
if(Auth::user()->isAdmin()) {
//Admin
return $this->getAdminIndex();
} else {
//No admin
return $this->getUserIndex();
}
}
protected function getAdminIndex()
{
return view('admin.index');
}
protected function getUserIndex()
{
return view('user.index');
}
但最干净的方法就是只有两条路线。