Laravel控制器过滤问题

时间:2015-04-11 14:00:01

标签: php laravel

我在filters.php中定义了这个过滤方法

Route::filter('auth', function()
{
    if (Auth::guest())
    {
        if (Request::ajax())
        {
            return Response::make('Unauthorized', 401);
        }
        else
        {
            return Redirect::guest('login');
        }
    }
});

当我将此代码添加到控制器

public function __construct()
{
    $this->beforeFilter('auth');
}

它给了我Illuminate\Routing\RouteCollection.php

的laravel的着名路线例外

1 个答案:

答案 0 :(得分:0)

为什么要把它放在控制器中?您可以在route.php中将过滤器附加到路由或控制器。假设您有多条路线要检查用户是否为来宾。因此,在routes.php中,您可以定义组过滤器。如果在控制器中定义该过滤器,则必须将过滤器附加到每个控制器。见下面的例子:

Route::group(array('before' => 'auth'), function()
{
  Route::get('user/account', 'UserController@account');
  Route::get('user/settings', 'UserController@settings');
  Route::get('post/create', 'PostController@create');
  Route::post('post/store', 'PostController@store');
  // ...
});

示例

验证过滤器

Route::filter('auth', function()
{
  if (Auth::guest()) return Redirect::guest('login');
});

将Auth Filter附加到控制器

Route::get('user', array('before' => 'auth', 'uses' => 'UserController@showProfile'));