Laravel 5.2.x禁用特定的中间件

时间:2016-04-20 14:44:20

标签: php laravel testing laravel-5.2 middleware

是否可以在不禁用所有中间件的情况下禁用特定的中间件?

我会在运行测试时使用它,所以我不想定义中间件组,然后将它们分配给我的路由。

$this->withoutMiddleware(); // <-- This will prevent all middleware 

$this->withoutMiddleware('web'); // <-- What I want is something like this 

3 个答案:

答案 0 :(得分:4)

我有另一种解决方案,您可以根据您的环境在受影响的中间件中添加条件:

public function handle($request, Closure $next)
{
    if (App::environment('testing')) {
        return $next($request);
    }

    // Your middleware logic

    return $next($request);
}

答案 1 :(得分:0)

好吧,你可以使用middleware groups,这是一种更好的方法。定义几个组,并将它们分配给您的路线。

答案 2 :(得分:0)

您可以将特定路由添加到中间件本身的$ except数组中。

例如:我不希望我的api路由有Web中间件,所以这就是我在VerifyCsrfToken.php中所做的

protected $except = [
    "api/*",
    "more/routes",
];