Laravel Redirects Loop Auth

时间:2015-01-19 09:41:31

标签: loops authentication redirect laravel

我在我的route.php中有这个:

Route::resource('post','postcontroller');

我想要'发布'如果用户登录,则可以访问。所以,我在我的route.php中做了这个:

Route::group(array('before'=>'auth'),function(){
Route::get('post','postcontroller@index');
});

在我的控制器中,我编码 - > "登录后,重定向到' post' "

但是,当我尝试在真实浏览器中登录时,登录后,它会自动重定向到“登录”。

我用谷歌搜索,我得到了解决方案,我必须更改filters.php上的代码:

FROM

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

INTO

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

在我完成之后,确实在我尝试在真实浏览器中登录后,它会指示我发布' post'网址。但是,问题是我得到了错误"这个网页有一个重定向循环" (网址有权进入' post')。

是否有重定向循环问题的解决方案?感谢

1 个答案:

答案 0 :(得分:0)

这一行

Route::resource('post','postcontroller');

使Laravel动态生成路径集合。

然后在这里你创建了另一条路线(已经由前一个陈述创建)

Route::group(array('before'=>'auth'),function(){
Route::get('post','postcontroller@index');
});

试试这个

删除这条新的单一路线 路线::得到('后',' PostController中@指数&#39);

将资源放入过滤器

Route::group(array('before'=>'auth'),function(){

    // resource routes now require Authentication to access
    Route::resource('post','postcontroller');

});

过滤

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

此行return Redirect::guest('login');仅确定用户验证失败后将向其发送的位置。所以将它改为你想发送给它们的路线。