【发布时间】:2017-04-05 14:13:47
【问题描述】:
在我的 Laravel 应用程序中,我有不同的角色(用户、经理、管理员)。
我想知道为每个用户管理主页的最佳做法,这意味着我想使用相同的 url 但不同的视图。
好像不能直接在Routes里面做:
Route::group(['middleware' => 'auth:user'], function () {
$u = 'user.';
Route::get('/', ['as' => $u . 'home', 'uses' => 'UserController@getHome']);
});
Route::group(['middleware' => 'auth:manager'], function () {
$m = 'manager.';
Route::get('/', ['as' => $m . 'home', 'uses' => 'ManagerController@getHome']);
});
另一种方法是将所有人重定向到同一个控制器并在控制器内部显示不同的视图。
Route::group(['middleware' => 'auth:all'], function () {
$a = 'authenticated.';
Route::get('/', ['as' => $a . 'home', 'uses' => 'HomeController@getHome']);
});
但是,如果您必须管理 2 个以上的角色,这会变得非常烦人...
最后一个选项是在 Routes 中设置一些条件,例如:
Route::group(['middleware' => 'auth:all'], function () {
if (Auth::user()->hasRole('user)'{
Route::get('/', ['as' => $a . 'home', 'uses' => 'UserController@getHome']);
} else {
Route::get('/', ['as' => $a . 'home', 'uses' => 'ManagerController@getHome']);
}
});
非常感谢
【问题讨论】:
标签: laravel routes middleware