2014-04-22 17 views
8

Có thể thêm nhiều bộ lọc trên một tuyến đường nhóm trong Laravel 4 không?Làm thế nào để áp dụng nhiều bộ lọc trên nhóm tuyến Laravel 4?

Tôi có 2 phương pháp xác thực cho ứng dụng trung tâm API. Một với xác thực chuẩn (bộ lọc "auth" cho trang web), một với mã thông báo (bộ lọc "auth.token" cho ứng dụng dành cho thiết bị di động).

<?php 
    Route::group(array('prefix' => 'api/'), function() { 
     #Custom routes here 
    }); 
?> 

Lý tưởng tôi muốn rằng nếu một trong hai bộ lọc vượt qua, nhóm có thể truy cập.

Trả lời

19

Bạn có thể:

Route::group(['before' => 'auth|csrf'], function() 
{ 
    // 
}); 

Tuy nhiên nếu bạn muốn làm cho nó accesible nếu hai của các bộ lọc đi qua, bạn phải viết thêm một chút nữa (trong filters.php):

function csrfFilter() 
{ 
    if (Session::token() != Input::get('_token')) 
    { 
     throw new Illuminate\Session\TokenMismatchException; 
    } 
} 
function authFilter() 
{ 
    if (Auth::guest()) return Redirect::guest('login'); 
} 

Route::filter('csrf-or-auth', function() 
{ 
    $value = call_user_func('csrfFilter'); 
    if ($value) return $value; 
    else return call_user_func('authFilter'); 
}); 

Trong routes.php

Route::group(['before' => 'csrf-or-auth'], function() 
{ 
    // 
}); 

Hãy nhớ rằng bạn phải trả lại gì khi lọc qua. Tôi hy vọng điều này sẽ giúp bạn!

+1

Có lỗi cú pháp. Mã phải được đặt trong tệp 'routes.php' phải là' Route :: group (mảng ('trước' => 'csrf-hoặc-auth'), hàm() { }); ' – Amr

+0

Cảm ơn @Amr. Nó đã được sửa ngay bây giờ – edpaez

+0

Bạn vẫn cần xóa một trong hai dấu ngoặc đơn cuối cùng (dấu ngoặc đơn tồn tại trước dấu chấm phẩy). Và cũng áp dụng các thay đổi tương tự trên đoạn mã đầu tiên. – Amr

2

Bạn có thể làm điều đó với laravel

Route::group(array('prefix' => 'api/', 'before' => 'filter1|filter2'), function() 
{ 
    Route::get('api1', function() 
    { 
     // Has Filter1 and filter2 
    }); 

    Route::get('api2', function() 
    { 
     // Has filter1 and filter2 
    }); 
}); 

kiểm tra các documentation để biết thêm chi tiết

+2

Yêu cầu được hỏi cho HOẶC bạn đã giải thích cách thực hiện VÀ. Các | trong thuộc tính trước có nghĩa là AND, nó thực sự chỉ là một seperator mảng. – malhal

Các vấn đề liên quan