2014-04-22 17 views
8

Laravel 4'te bir grup rotasına birden fazla filtre eklemek mümkün müdür?Laravel 4 rota grubunda birden fazla filtre nasıl uygulanır?

API merkezli bir uygulama için 2 kimlik doğrulama yöntemim var. Biri, standart bir kimlik doğrulamasıyla (web sitesi için filtre "auth"), biri belirteçle (mobil uygulama için filtre "auth.token").

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

İdeal iki filtrelerden biri geçirirseniz o grup erişilebilir istiyorum.

cevap

19

için documentation Şunları yapabilirsiniz: Ancak

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

bunu erişilebilir eğer ya yapmak istiyorsanız filtreler geçerse, biraz daha (filter.php içinde) yazmanız gerekir:

routes.php

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

yılında

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'); 
}); 

Filtre geçtiğinde hiçbir şey dönmek zorunda unutmayın. Umarım bu size yardımcı olur!

+1

Bir sözdizimi hatası var. 'Route.php' dosyasında bulunması gereken kod, Route :: group (array ('before' => 'csrf-or-auth'), function() { }); ' – Amr

+0

Teşekkürler olmalıdır. @Amr. Şimdi düzeltildi – edpaez

+0

Hala son 2 parantezden birini kaldırmanız gerekiyor (bunlar noktalı virgülden önce var). Ayrıca, aynı değişiklikleri ilk kod snippet'inde de uygular. – Amr

2

Yapabileceğin laravel ile

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 
    }); 
}); 

çek o fazla ayrıntı

+2

VEYA için sorulan op, AND nasıl yapılacağını açıkladı. | önceki özellikte, VE, aslında bir dizi ayırıcı anlamına gelir. – malhal