php - 如何在 Laravel 4 路由组上应用多个过滤器?

标签 php laravel-4

是否可以在 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/

相关文章:

PHP 返回代码未显示,但它曾经

php - 如何在 Laravel 中限制页面链接数?

laravel - 验证laravel 5中数字字段的确切长度

laravel-4 - Laravel 4 - 与 Eloquent 的简单连接?

php - CakePHP中的Cron Jobs突然停止了

php - Laravel - 500 内部服务器错误

php - 嵌套评论背后的算法是什么?

php - auth()->user()->id 在 Controller 中使用到 api.php 的路由时无法正常工作

php - Composer : required packages with differing levels of minimum-stability

php - Laravel redirect()->intended() 在自定义登录 Controller 中不起作用