是否可以在Laravel 4的组路由中添加多个过滤器?

我有2种以API为中心的应用程序的身份验证方法。
一种具有标准身份验证(针对网站的过滤器“auth”),一种具有 token (针对移动应用程序的过滤器“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()
{
     //
});

请记住,当过滤器通过时,您不必返回任何内容。
我希望这可以帮助你!

关于php - 如何在Laravel 4路由组上应用多个过滤器?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/23224096/

10-12 15:07
查看更多