Laravel-beforeFilter在控制器中没有';不起作用


Laravel beforeFilter in controller doesn't work

我想对登录和注册页面应用一个过滤器,这样已经登录的用户将从他们重定向到索引页面。这是路线:

Route::controller('users', 'UsersController');

以下是UserController中的beforeFilters:

public function __construct()
{
    $this->beforeFilter('guest', ['on' => 'getLogin']);
    $this->beforeFilter('guest', ['on' => 'getRegister']);
}

以下是getLogin操作:

public function getLogin()
{
    return View::make('users/login');
}

过滤器本身(filters.php):

Route::filter('guest', function()
{
    if (Auth::check()) return Redirect::to('/');
});

然而,当我已经登录并试图访问登录或注册页面时,我不会重定向到"/"。问题出在哪里?

'on'实际上是用于指定HTTP谓词的。试试这个:

$this->beforeFilter('guest', ['only' => ['getLogin', 'getRegister']]);