首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >laravel将发送验证代码的时间间隔设置为SMS,以便在注册后激活用户。

laravel将发送验证代码的时间间隔设置为SMS,以便在注册后激活用户。
EN

Stack Overflow用户
提问于 2020-05-24 21:48:09
回答 1查看 1.1K关注 0票数 0

如何设置用户第一次请求验证代码和第二次尝试之间的时间间隔或时间差(应该是30秒)?另外,如何显示时间计数器: 29:00下降到0秒?

代码语言:javascript
复制
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();
     }

}

EN

回答 1

Stack Overflow用户

发布于 2020-05-24 22:53:52

谢天谢地,拉拉维尔让你了解了这方面的情况。在Laravel中,您可以使用一个名为throttle的中间件来实现速率限制。您需要将此throttle中间件分配给路由或路由组。

中间件基本上接受两个参数,特别是“请求数量”和“持续时间”,这确定了在给定的分钟内可以发出的最大请求数。

基本示例

您可以将一个throttle中间件分配给一个路由,如下所示

代码语言:javascript
复制
Route::get('admin/profile', function () {
    //
})->middleware('auth', 'throttle:30,1');

如您所见,上述路由配置将允许通过身份验证的用户访问路由每分钟30次。如果用户在指定的时间范围内超过此限制,Laravel将返回具有以下响应头的429 Too Many Requests

代码语言:javascript
复制
x-ratelimit-limit: 2
x-ratelimit-remaining: 0
x-ratelimit-reset: 1566834663

然后,使用vue或js在您的前端,您可以做一个计数器,将开始计数所需的数字,以便用户知道他还剩下多少时间。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61992822

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档