Laravel 4 Auth Filter:无法生成指定路由的URL,因为此路由不存在

时间:2013-07-10 04:11:59

标签: authentication laravel laravel-4

我正在尝试限制我命名为Artists的资源(由ArtistsController运行)。我尝试直接使用控制器中的构造函数执行此操作:

 public function __construct()
    {
    $this->beforeFilter('auth', array('except' => array()));
    }

在我的过滤器中,我有:

Route::filter('auth', function()
{
    if (Auth::guest()) return Redirect::route('fans/landing');
});

在我的路线中,我有:

Route::get('fans/landing', array('uses' => 'FansController@getIndex'))->before('guest');

但是,当我运行它(尝试转到其中一个资源页面)时,我收到以下错误:

Unable to generate a URL for the named route "fans/landing" as such route does not exist.

这很奇怪,因为当我删除构造函数时,粉丝/登录页面加载正常。此外,它重定向另一个页面(不是资源的一部分),对于粉丝/登陆很好,当我有:

Route::get('/fans/home', array('uses' => 'FansController@getHome'))->before('auth');

1 个答案:

答案 0 :(得分:2)

更改

Route::get('fans/landing', array('uses' => 'FansController@getIndex'))->before('guest');

Route::get('fans/landing', array('as' => 'fans.landing', 'uses' => 'FansController@getIndex'))->before('guest');

并更改

Route::filter('auth', function()
{
    if (Auth::guest()) return Redirect::route('fans/landing');
});

Route::filter('auth', function()
{
    if (Auth::guest()) return Redirect::route('fans.landing');
});