【问题标题】:Laravel multiple midleware for some routeLaravel 用于某些路由的多个中间件
【发布时间】:2017-05-03 01:28:57
【问题描述】:

我正在使用 laravel 5.2 开发 Web 应用程序。 我需要的是我有一些按角色区分的帐户。我必须拥有可以访问 1 条路线但其他角色无法访问的角色。我已经浏览了,我已经完成了我发现的所有事情

Route::group(['prefix' => '/', 'middleware' => ['role:user_a','role:user_b']], function(){someroute}

Route::group(['prefix' => '/', 'middleware' => ['role:user_a|role:user_b']], function(){someroute}

Route::group(['prefix' => '/', 'middleware' => ['role:user_a,role:user_b']], function(){someroute}

没有人工作。我不知道如何让我的单一路由可以被 2 个角色访问,但对其他角色禁用

【问题讨论】:

    标签: php laravel routing roles middleware


    【解决方案1】:

    我认为你不能这样做,但你可以使用这种方式。

    Route::group(['prefix'=>'/', 'middleware' =>['role:user_a','role:user_b']],function(){
    
          Route::group(['prefix'=>'userAorB', 'middleware' =>['role:user_a|role:user_b']],function(){ Routes });
          Route::group(['prefix'=>'userAANDB', 'middleware' =>['role:user_a,role:user_b']],function(){ Routes });
    
    })
    

    【讨论】:

    • 我在 Router.php 第 579 行遇到错误 ErrorException:trim() 期望参数 1 是字符串,给定数组
    • 可以使用路由获取吗?不是路由组?
    【解决方案2】:

    您可以创建一个名为 role 的中间件,在文档 here 中阅读有关中间件的更多信息

    中间件的handle方法如下:

    public function handle($request, Closure $next)
    {
        if (auth()->user()->role('b')) {
            return redirect('home');
        }
        // else users of other roles can visit the page
        return $next($request);
    }
    

    然后你可以在你的路由文件中使用它:

    Route::group(['middleware' => 'role'], function () {
        // someroute
    });
    

    【讨论】:

      猜你喜欢
      • 2020-09-16
      • 2020-08-02
      • 2016-07-09
      • 2020-05-09
      • 2018-09-22
      • 2013-03-30
      • 2017-12-07
      • 2018-01-04
      • 1970-01-01
      相关资源
      最近更新 更多