如何设置用户第一次请求验证代码和第二次尝试之间的时间间隔或时间差(应该是30秒)?另外,如何显示时间计数器: 29:00下降到0秒?
public function sendSms($request)
{
$apiKey = config('services.smsapi.ApiKey');
$client = new \GuzzleHttp\Client();
$endpoint = "https://www.sms123.net/api/send.php";
try
{
$response = $client->request('GET', $endpoint, ['query' => [
'recipients' => $request->contact_number,
'apiKey' => $apiKey,
'messageContent'=>'testSite.com verification code is '.$request->code,
]]);
$statusCode = $response->getStatusCode();
$content = $response->getBody();
$content = json_decode($response->getBody(), true);
return $content['msgCode'];
}
catch (Exception $e)
{
echo "Error: " . $e->getMessage();
}}
发布于 2020-05-24 22:53:52
谢天谢地,拉拉维尔让你了解了这方面的情况。在Laravel中,您可以使用一个名为throttle的中间件来实现速率限制。您需要将此throttle中间件分配给路由或路由组。
中间件基本上接受两个参数,特别是“请求数量”和“持续时间”,这确定了在给定的分钟内可以发出的最大请求数。
基本示例
您可以将一个throttle中间件分配给一个路由,如下所示
Route::get('admin/profile', function () {
//
})->middleware('auth', 'throttle:30,1');如您所见,上述路由配置将允许通过身份验证的用户访问路由每分钟30次。如果用户在指定的时间范围内超过此限制,Laravel将返回具有以下响应头的429 Too Many Requests。
x-ratelimit-limit: 2
x-ratelimit-remaining: 0
x-ratelimit-reset: 1566834663然后,使用vue或js在您的前端,您可以做一个计数器,将开始计数所需的数字,以便用户知道他还剩下多少时间。
https://stackoverflow.com/questions/61992822
复制相似问题