2017-05-07 113 views
-2

所以我试图实现某些东西,这似乎是不可能的。我希望在我的应用程序中使用不同的控制器来根据用户角色使用一些路由这是我正在尝试的方法,但效果不佳。用户线路工作,但管理的路线返回,并试图让非对象错误属性在VerifyCsrfToken.php文件*laravel基于用户角色的多个控制器的路由

Route::group(array('middleware' => 'isAdmin'), function() { 
    Route::get('/', 'Admin\[email protected]'); 
}); 

Route::group(array('middleware' => 'isUser'), function() { 
    Route::get('/', 'User\[email protected]'); 
}); 

我中间件

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'); 
}); 
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'); 
} 

但要做到这一点是最干净的方式,只是有两条路线。