2016-04-20 20 views
9

Có thể tắt một phần mềm trung gian cụ thể mà không vô hiệu hóa tất cả phần mềm trung gian không?Laravel 5.2.x vô hiệu hóa phần mềm trung gian cụ thể

Tôi sẽ sử dụng nó khi chạy thử nghiệm, vì vậy tôi không muốn xác định nhóm trung gian và sau đó gán chúng cho tuyến đường của tôi.

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

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

Trả lời

0

Vâng, bạn có thể sử dụng middleware groups mà là một cách tiếp cận tốt hơn nhiều. Xác định một vài nhóm và chỉ định chúng cho tuyến đường của bạn.

+1

Web, được đề cập trong câu hỏi là (có thể) một nhóm trung gian đã . Mặc dù vậy, điều này không giải thích làm thế nào để vô hiệu hóa một middleware duy nhất, hoặc nhóm middleware. –

3

Tôi có một giải pháp thay thế, bạn có thể thêm một điều kiện trong middleware ảnh hưởng của bạn theo Environnement của bạn:

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

    // Your middleware logic 

    return $next($request); 
} 
+0

Tôi nghĩ rằng đây sẽ là một giải pháp tốt cho tôi. Tôi muốn có một phương pháp mà bạn có thể vô hiệu hóa một middleware cụ thể. – aleixfabra

+0

Tôi không biết sự tồn tại của một hàm như vậy. Nó có thể là một yêu cầu kéo thông minh cho repo laravel – soywod

+0

Tôi đồng ý với bạn. – aleixfabra

0

Bạn có thể thêm các tuyến đường đặc biệt đến $ trừ mảng trong middleware riêng của mình.

Ví dụ: Tôi không muốn các tuyến đường api của tôi để có middleware web, vì vậy đây là những gì tôi đã làm trong VerifyCsrfToken.php

protected $except = [ 
    "api/*", 
    "more/routes", 
]; 
Các vấn đề liên quan