是否可以在Laravel 4中的组路由上添加多个过滤器?
我有一个API中心应用程序的2种身份验证方法.一个具有标准身份验证(网站过滤器"auth"),一个带有令牌(过滤器"auth.token"用于移动应用程序).
<?php
Route::group(array('prefix' => 'api/'), function() {
#Custom routes here
});
?>
Run Code Online (Sandbox Code Playgroud)
理想情况下,我希望如果两个过滤器中的一个通过,则可以访问组.
edp*_*aez 19
您可以:
Route::group(['before' => 'auth|csrf'], function()
{
//
});
Run Code Online (Sandbox Code Playgroud)
但是,如果您希望在任一过滤器通过时使其可访问,则必须多写一些(在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');
});
Run Code Online (Sandbox Code Playgroud)
在routes.php中
Route::group(['before' => 'csrf-or-auth'], function()
{
//
});
Run Code Online (Sandbox Code Playgroud)
请记住,过滤器通过时您必须不返回任何内容.我希望这可以帮助你!