【问题标题】:Laravel - How to pass variables to middleware through route group?Laravel - 如何通过路由组将变量传递给中间件?
【发布时间】:2017-08-07 06:17:06
【问题描述】:

这是我的路线组,

Route::group(['middleware' => 'checkUserLevel'], function () {
                // my routes
            });

这是我的中间件checkUserLevel

public function handle($request, Closure $next, $level)
    {
        $user = Auth::user();
        if ($user->level > $level) {
            return redirect('testUrl');
        }

        return $next($request);
    }

我想将 $level 变量从路由组传递给中间件。 谢谢。

【问题讨论】:

标签: php laravel-5 laravel-routing laravel-5.4 laravel-middleware


【解决方案1】:

您可以使用冒号简单地将多个参数传递到中间件。像这样使用它:

Route::group(['middleware' => 'checkUserLevel:some_value_of_level'], function () {
            // my routes
        });

现在,您可以在 $level 变量中包含此值。

public function handle($request, Closure $next, $level)
{
    $user = Auth::user();
    if ($user->level > $level) {
        return redirect('testUrl');
    }

    return $next($request);
}

这会有所帮助。


编辑:2018 年 12 月 14 日

您还可以将多个变量发送到中间件。您只需要使用逗号 (,) 分隔值。

Route::group(['middleware' => 'checkUserLevel:some_value_of_level, one_more_value_to_send'], function () {
                    // my routes
});

您将在中间件处理程序中$level 之后的变量中获得值one_more_value_to_send

public function handle($request, Closure $next, $level, $another_value)
{
   $user = Auth::user();
   if ($user->level > $level) {
      return redirect('testUrl');
   }

   return $next($request);
}

更多详情可以参考:Passing parameters to Middleware in Laravel 5.1

【讨论】:

  • @xEterno 是的,您可以通过逗号分隔多个变量。
【解决方案2】:

在 Laravel 6.x 中你必须这样做 在中间件中添加代码

 public function handle($request, Closure $next,$module=null,$right=null)
    {
        dd($module,$right);
        return $next($request);
    }

你的路线代码是这样的

Route::get('/department/add', 'DepartmentController@addNew')->middleware('ManualSec:abc,xyz');

在 Kernel.php 中,在 $routeMiddleware 部分中注册你的中间件

'ManualSec' => \App\Http\Middleware\ManualSec::class,

在我的例子中,通过使用 url 调用 rout

http://local.pms.com:8080/department/add

结果是这样的:

现在您可以在中间件中编码

【讨论】:

    猜你喜欢
    • 2015-03-16
    • 2015-04-06
    • 2017-08-09
    • 2020-01-23
    • 2015-12-02
    • 2020-07-27
    • 2019-08-12
    • 1970-01-01
    • 2018-06-20
    相关资源
    最近更新 更多