根据用户角色使用不同的控制器 - Laravel 5.1

4

我不确定这是好的做法还是坏的做法,但我正在尝试根据用户角色使用不同的控制器/方法加载相同的路由。

尝试像下面这样进行角色过滤,但不确定这是否是正确的方法:

Route::group(['before' => 'role:admin'], function() {
   Route::get('/', 'FirstController@index');
});

Route::group(['before' => 'role:editor'], function() {
   Route::get('/', 'SecondController@index');
});


Route::filter('role', function($route, $request, $value) {
   // what to do here and is this the right way?
});

但是我无法让它起作用。我该如何实现这个目标?
编辑
发现了这个线程:Laravel同一路由,不同控制器 但是被接受的答案:
if( ! Auth::check())

在routes.php中始终返回false。


“中间件”使得它变得更加简单。尝试这种方式。 - Basheer Kharoti
你能提供一些关于如何使用中间件调用不同的控制器的更多信息吗? - Tim van Uum
我将会发布一个详细的答案。也许那能帮到你。 - Basheer Kharoti
通过类似以下的方式解决了问题:https://dev59.com/Nl0Z5IYBdhLWcg3whAlv - Tim van Uum
1个回答

0

也许你可以有类似这样的东西?

Route::group(['middlware' => ['web', 'auth']], function (Router $router)
{
    /** get the logged in user here **/
    Auth::loginUsingId(2);
    $user = Auth::user();

    //you can move this to some other function but just to get the idea out i did it this way.
    if ($user->hasRole('admin'))
    {
        $router->get('test', function ()
        {
            dd('admin');
        });
    }
    elseif ($user->hasRole('owner'))
    {
        $router->get('test', function ()
        {
            dd('owner');
        });
    }
});

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接