【问题标题】:How can i make sure middleware is run before another我如何确保中间件在另一个之前运行
【发布时间】:2017-02-06 15:33:47
【问题描述】:

您好有一个中间件,我必须确保它在 auth 中间件之后运行。我如何保证 auth 中间件在我之前处理?这甚至可能吗?

提前致谢。

【问题讨论】:

    标签: php laravel laravel-5 middleware


    【解决方案1】:

    来自 laravel 5.4 文档:

    Route::get('/', function () {
        //
    })->middleware('first', 'second');
    

    第一个和第二个必须是路由中间件,如果你在 app/Http/Kernel.php 中查找就可以找到它们。

    【讨论】:

    • 这是否也适用于控制器的__construct() 并调用$this->middleware()
    • 如果您在控制器__construct() 方法中多次调用$this->middleware(),它们应该以相同的顺序调用。我不太确定,但你可以自己试试。
    【解决方案2】:

    您的中间件将在之后运行,身份验证中间件具有更高的优先级。查看 Kernel 基类 (Illuminate\Foundation\Http\Kernel) 的变量 $middlewarePriority。

    第一个中间件是 StartSession,这就是我们想要的。

    如果需要,您可以修改此变量以在 Auth 之前运行您的中间件之一。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-01-09
      • 1970-01-01
      • 2021-10-10
      • 1970-01-01
      • 1970-01-01
      • 2012-11-04
      相关资源
      最近更新 更多