自定义路由筛选器忽略重定向


Custom route filters ignoring redirect

我在创建自定义过滤器时遇到了一些问题。我的目标是确保经过身份验证的用户在允许他们访问组中定义的路线之前满足特定条件。

尽管我已经确认其中一个条件已经满足,但现在它仍然没有问题。它忽略了我的重定向。

routes.php

Route::group(array('before' => 'registered'), function()
{
    Route::get('/page', array('as' => 'page', 'uses' => 'PageController@getIndex'));
});

过滤器.pp

Route::filter('registered', function()
{
    if(Auth::check())
    {
        if(!Auth::user()->confirmed())
        {
            return Redirect::route('signup.send.confirmation')->with('alert-warning', 'You must confirm your email address before continuing.  Fill out the form below if you need a new activation email.  Thank you!');
        }
        if(!Auth::user()->registered)
        {
            return Redirect::route('signup.profile')->with('alert-warning', 'You must fill out the following information before continuing.  Thank you!');
        }
    }
});

非常感谢您的帮助!非常感谢。

我认为您的过滤器有一些问题。您似乎允许未注册的用户使用此路线。我认为你需要的是:

Route::filter('registered', function()
{
    if(!Auth::check()) {
          return Redirect::route('signup.profile')->with('alert-warning', 'You must fill out the following information before continuing.  Thank you!');
    }
    else
    {
        if(!Auth::user()->confirmed())
        {
            return Redirect::route('signup.send.confirmation')->with('alert-warning', 'You must confirm your email address before continuing.  Fill out the form below if you need a new activation email.  Thank you!');
        }
    }
});

如果它不能解决问题,您应该提供更多详细信息,特别是如何检查这些条件是否为真,以及您是否确定此筛选器已运行。

我不知道如何解释它,但现在它正在按照我原来的帖子中写的那样工作。我一定是在某个地方漏掉了一个测试。

访问/page不需要身份验证。但如果他们通过了身份验证,我想确保他们已经完成了所有必要的步骤,以获得一个完整的帐户/配置文件。这就是过滤器的理由,如果它们没有经过身份验证,它不会重定向它们。

如果你想做一个自定义过滤器,我最初的问题是有效的!很抱歉浪费了任何人的时间。