Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/250.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 将哈希查询参数添加到具有时间限制的URL laravel_Php_Laravel_Url_Hash - Fatal编程技术网

Php 将哈希查询参数添加到具有时间限制的URL laravel

Php 将哈希查询参数添加到具有时间限制的URL laravel,php,laravel,url,hash,Php,Laravel,Url,Hash,我想在我的应用程序URL中添加一个哈希查询参数,它应该有ID和时间限制,比如说3分钟。如果我们尝试在3分钟后使用相同的URL,它应该会起作用。我该怎么做 use Hash; ... $id = 15; $key = base64_encode(Hash::make($id)); echo "http://someurl?send_mail_to_user=$id&key=$key"; 我已经尝试了上面的方法,但是我们只能传递一个id,并且没有时间限制选项 有人能帮我

我想在我的应用程序
URL
中添加一个哈希查询参数,它应该有ID和时间限制,比如说3分钟。如果我们尝试在3分钟后使用相同的URL,它应该会起作用。我该怎么做

use Hash;
...
$id = 15;
$key = base64_encode(Hash::make($id));
echo "http://someurl?send_mail_to_user=$id&key=$key";
我已经尝试了上面的方法,但是我们只能传递一个
id
,并且没有时间限制选项

有人能帮我吗?

即使有时间限制,Laravel也可以为URL签名

您可以轻松地执行以下操作,以实现您可以轻松验证且支持时间限制的功能:

使用light\Support\Facades\URL;
返回URL::signedRoute('your_route_name',now()->addMinutes(30),['id'=>15]);
然后,您可以验证请求是否有效以及是否已签名(并且在时间限制内),如下所示:

使用照亮\Http\Request;
路由::get('/send_mail_to_user',函数(Request$Request){
如果(!$request->hasValidSignature()){
中止(401);
}
// ...
})->名称(“您的路线名称”);

您可以做的是生成您的
临时SignedRoute
,然后将其传递给视图。例如,

web.php

路由::get('/',函数(){ //生成签名路由并将其传递到欢迎视图 $route=URL::temporarySignedRoute('verify',now()->addMinutes(10),['user'=>15]); 返回视图('welcome',['route'=>$route]); }); //定义将使用签名路由处理请求的路由 路由::get('/verify/{user}',函数(Request$Request){ 如果(!$request->hasValidSignature()){ //请求无效 中止(401); } //否则请求有效 })->名称(“验证”); 欢迎使用.blade.php


上述
$route
值将是
临时指定路线的


上面的调用都可以移动到控制器,我只是使用了
web.php
文件来简化这个例子。

Tnx,让您快速响应。但是我的URL在刀片式文件中,比如
您只需将
URL::signedRoute(…)
的结果作为变量传递给视图,就像将任何类型的数据传递给视图一样。