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(…)
的结果作为变量传递给视图,就像将任何类型的数据传递给视图一样。