使用中间件Laravel保护路由



我已经在我的应用程序中实现了中间件角色和权限控制,但我不明白为什么它只允许我定义一个'/'路由。第二个仍然指向'/home',即使我重写了authcontrollerredirectto变量。

我的路线:

Route::group(['middleware' => 'role:user'], function()
{
 Route::get('/', 'ScoresController@user');
});
Route::group(['middleware' => 'role:admin'], function()
{
Route::get('/', 'PagesController@home');
});

在任何情况下,用户身份验证后,用户角色重定向到'/home'。

就像Simon说的你的第二个路由会覆盖第一个你可以做的是加载另一个控制器通过redirect()将你重定向到另一个页面或者把它写成路由本身。

可以像这样:

Route::get('/', function(){
    $user = Auth::user();
    if($user->is('admin') {
        return redirect('admin');
    }else{
        return redirect('user');
    }
});
Route::get('admin', ['middleware' => 'role:admin', 'uses'=> 'PagesController@home']);

这只是众多可能性中的一种,希望对您有所帮助。

最新更新