Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/275.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/35.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 获取用户在Laravel中重定向的URL并添加为URL参数_Php_Laravel_Laravel 4_Laravel Routing - Fatal编程技术网

Php 获取用户在Laravel中重定向的URL并添加为URL参数

Php 获取用户在Laravel中重定向的URL并添加为URL参数,php,laravel,laravel-4,laravel-routing,Php,Laravel,Laravel 4,Laravel Routing,我刚在我的电脑上安装了Laravel,我的路由有问题。当用户键入URLhttp://laravel.app/admin在不登录的情况下,我想将其重定向到http://laravel.app/login?Return_URL=http://laravel.app/admin就像Jeffrey Way对Laracast所做的那样 我怎么做 我已经将其添加到我的routes.php中 Route::get('/admin',array('before'=>'auth','as'=>'admin.ind

我刚在我的电脑上安装了Laravel,我的路由有问题。当用户键入URL
http://laravel.app/admin
在不登录的情况下,我想将其重定向到
http://laravel.app/login?Return_URL=http://laravel.app/admin
就像Jeffrey Way对Laracast所做的那样

我怎么做

我已经将其添加到我的routes.php中

Route::get('/admin',array('before'=>'auth','as'=>'admin.index','uses'=>'AdminController@index'));

我不知道下一步该怎么办

==澄清===


当用户转到受保护的页面,即
/admin
/admin/{{{other page}}
时,我希望它被重定向到
/login
,但要使用URL参数,在他被重定向到登录页面之前,该参数在其中。成功登录后,用户将被重定向到他要访问的第一个URL,该URL在
?Return\u URL=
参数中被捕获。

为什么不使用
重定向::designed('fallback')
?这会将用户重定向回他想要查看的页面。您还可以提供备用url

你可以阅读更多关于它的内容

编辑: 更具体地说,您可以按以下方式执行:

Route::group(array('prefix' => 'admin','before' => 'auth'),function(){
    //here you're admin routes
});
在过滤器文件中,您可以将auth过滤器更改为类似以下内容:

Route::filter('auth',function(){
    if(!Auth::check())
       return Redirect::guest('login');
});
guest方法将其设置为在会话中保存所需的url。 在登录页面上,您可以在尝试用户凭据后执行此操作:

Route::intended('fallback');
但是,如果确实想使用查询参数执行此操作,只需执行以下操作:

Route::filter('auth',function(){
    if(!Auth::check())
       return Redirect::to('login',array('Return_URL' => Route::current()));
});

您应该在app/filters.php上有一个过滤器文件。如果你打开它,你会看到这样的东西:

Route::filter('auth', function()
{

});
这是在路由服务之前触发的函数。在这里你可以重定向,如果他们没有登录。例如:

Route::filter('auth', function()
{
    if (!Auth::check())
    {
        // The user is not logged in so redirect them
    }
});

有关更多信息,请签出文档的和。

您可以修改“身份验证”筛选器。如果用户未登录,请重定向到登录页面

Route::filter('auth', function(){
    if Auth::guest(){
      // sign them in
    }
    else{
        return Redirect::to('pathToLogin');
    }
};

这似乎是促进最佳实践的唯一答案。然而,我觉得你应该把你的答案放大(只有链接的答案是自找麻烦的),还应该提到
Redirect::guest()
,它与
Redirect::destined()
。所以你的意思是我必须做大量的
Redirect::destined('fallback'))
因为用户也可能键入链接
/admin/show/
和其他同样受保护的页面?@alexrssell您是对的。我用更多信息更新了答案。我已经打开了那个文件。但你没有领会我的意思。我想在用户登录到URL后重定向他,在他被重定向到
login
之前,我应用了filter
auth
确定您的问题不清楚,这是您想要的