Laravel:使用查询字符串参数重定向到安全路由

时间:2014-08-16 13:46:40

标签: php laravel laravel-4

使用Laravel 4,您可以使用以下代码生成指向路径的URL

$url = route('route-name');
$url = app('url')->route('route-name');    
$url = URL::to('route-name');

是否可以为指定路线生成安全网址(https)?

我知道你可以在设置路线时“强迫”一条路线是安全的

Route::get('route-name', array('https', function()
{
    return 'Must be over HTTPS';
}));

然而,“强制”(似乎?)意味着使路线对基于http的浏览不可见。路由方法/功能无法接收此信息,仍会生成http个网址。

为了澄清,我已经设置了这样的路线

Route::get('/stack-overflow', array('as'=>'route-name', function(){

}));

这是一条路径为stack-overflow且名称为route-name的路线。我可以使用名称(http)生成明文route-name链接。我想使用路由名称生成安全的https链接,而不是路径。我还希望生成的URL包含查询字符串参数

https://example.com/stack-overflow?foo=bar

2 个答案:

答案 0 :(得分:0)

您正在寻找URL::secure

URL::secure('absolute/path');
//generates https://domain.com/absolute/path

使用命名路线:

URL::secure(URL::route('route-name'));

答案 1 :(得分:0)

从上面的Razor捕获评论,您可以使用以下代码生成我在Laravel 4.2.8中寻找的那种安全的查询字符串参数URL

//first parameter is the configured route name, second is the list of 
//query string parameters, the third parameter (`$absolute`), ensures
//the protocol and server is stripped from the return value (giving us /path/to/route
//vs. http://example.com/path/to/route
$url_path   = URL::route('route-name',['foo'=>'bar'],false);

//with the URL path generated, we can use the secure URL generation to
//turn that path into an https url 
$secure_url = URL::secure($url_path);