自定义路由过滤器忽略重定向

时间:2014-09-23 18:45:16

标签: php laravel laravel-4 laravel-routing

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

现在它只是继续/页面没有问题,即使我已经确认满足其中一个条件。它忽略了我的重定向。

routes.php文件

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

filters.php

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!');
        }
    }
});

非常感谢任何帮助!谢谢!

2 个答案:

答案 0 :(得分:0)

我认为您的过滤器存在一些问题。您似乎允许未注册的用户转到此路由。我想你需要的是:

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!');
        }
    }
});

如果它没有解决问题,您应该提供更多详细信息,特别是如何检查这些条件是否属实以及您是否确定运行此过滤器。

答案 1 :(得分:0)

我不确定如何解释它,但现在它正在工作,因为它是在我原来的帖子中写的。我一定忽略了某个地方的考试。

访问/页面不需要身份验证。但如果他们通过身份验证,我想确保他们已完成完成帐户/个人资料所需的所有步骤。这是过滤器的原因,如果未经过身份验证,则不会重定向它们。

如果您要查看自定义过滤器,我的原始问题可行!很抱歉浪费任何时间。