【问题标题】:Different controller depending on user role - Laravel 5.1根据用户角色不同的控制器 - Laravel 5.1
【发布时间】:2016-04-07 22:36:59
【问题描述】:

我不确定这是好是坏,但我正在尝试使用不同的控制器/方法加载相同的路由,具体取决于用户角色。

尝试像下面那样进行一些角色过滤,但不确定这是否是要走的路:

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 same route, different controller

但公认的答案:

if( ! Auth::check())

在 routes.php 中总是返回 false

【问题讨论】:

  • Middleware 让它变得非常简单。试试这种方式
  • 您能否提供更多关于如何使用中间件调用不同控制器的信息?
  • 我将发布一个详细的答案。可能对你有帮助
  • 通过执行以下操作修复它:stackoverflow.com/questions/31368433/…

标签: php laravel laravel-5.1


【解决方案1】:

也许你可以在这些方面有所作为?

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

【讨论】:

    猜你喜欢
    • 2019-08-07
    • 2015-08-12
    • 2017-08-30
    • 2012-07-07
    • 2015-12-09
    • 2020-11-01
    • 2016-07-23
    • 2020-06-09
    • 2023-03-25
    相关资源
    最近更新 更多