Можно ли добавить несколько фильтров на групповом маршруте в Laravel 4?
У меня есть два метода аутентификации для приложения, ориентированного на API. Один со стандартной аутентификацией (фильтр «auth» для веб-сайта), один с токеном (фильтр «auth.token» для мобильного приложения).
<?php Route::group(array('prefix' => 'api/'), function() { #Custom routes here }); ?>
В идеале я бы хотел, чтобы, если один из двух фильтров прошел , группа доступна.
Ты можешь:
Route::group(['before' => 'auth|csrf'], function() { // });
Однако, если вы хотите сделать его доступным, если пройдет один из фильтров, вам нужно будет написать немного больше (в 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'); });
В routes.php
Route::group(['before' => 'csrf-or-auth'], function() { // });
Помните, что при передаче фильтра вам ничего не нужно возвращать. Я надеюсь, это поможет вам!
Вы можете сделать это с помощью 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 }); });
проверьте документацию для получения более подробной информации