是否有可能使用Laravel 4.2中的Redirect::to()
重定向到具有GET参数的url?
我试图在用户登录后重定向到请求的页面,而他们没有登录。
如果你没有登录,并且访问了授权页面,我会在会话中保存完整的请求url(这个url可以是https://page.com/settings
、https://page.com/post/23
或https://page.com/post/23?show=full
。有很多变体)。
当你登录时,你的会话中存储了一个url,我用Redirect::to(https://page.com/post/23)
重定向你
在前两种情况下没有问题,但当我使用Redirect::to(https://page.com/post/23?show=full)
时,GET参数会被忽略。
是否有重定向到包含GET参数的url的选项?
您的应用程序出现问题。如果我理解正确,重定向后您的url中不存在查询参数(如:?param=true¶m2=1
)。
考虑以下示例:
Route::get('/test', function () {
return Redirect::to('http://localhost:8000/test2?with=params');
});
Route::get('/test2', function () {
echo '1';
});
当我尝试访问:localhost:8000/test
时,我被重定向到:http://localhost:8000/test2?with=params
这是预期的行为。你能发布一个重定向的例子吗?
此外,我还建议使用:Redirect::intended(),它本身就可以做您想要的事情。
试试这个:
你可以像这样传球https://page.com/post/23/showFull
你可以通过以下方式获得它:
Request::segment(3);
为什么不重定向::back()?身份验证过滤器应该能够将所有未经身份验证的请求重定向到登录页面,然后将用户重定向::back()到上一个访问过的页面。
编辑:过滤器,而不是中间件。
在Laravel中,如果您使用的是auth中间件,则默认情况下此功能可用,如下所示:
Route::group(array('before' => 'auth'), function(){
//authorized routes
});
示例
如果未登录的用户正在访问url"example.com/user?abc=123",这是一个授权的路由。
然后,用户将自动重定向到登录页面。
成功登录后,用户将自动重定向到第一个请求的url("example.com/user?abc=123")