【问题标题】:Laravel reset password spamLaravel 重置密码垃圾邮件
【发布时间】:2020-06-26 17:04:43
【问题描述】:

您好,我正在使用 Laravel DEFAULT 密码重置,它运行良好,但是有一个小问题,我可以每分钟请求一次“密码重置”,我不喜欢它,所以我的问题是如何减少请求时间,例如,我希望能够每 5m 发出 2 个请求。

/ForgotPasswordController.php

 public function __construct()
    {
        if (preg_match('/en/',url()->previous())){
            App::setLocale('en');
        }else{
            App::setLocale('ru');
        }

        $this->middleware('guest');

    }

【问题讨论】:

    标签: php laravel


    【解决方案1】:

    你可以使用 Laravel 默认提供的 ThrottleRequests 中间件,或者在控制器构造函数中定义它:

    public function __construct()
    {
        if (preg_match('/en/', url()->previous())) {
            App::setLocale('en');
        } else {
            App::setLocale('ru');
        }
    
        $this->middleware('throttle:2,5');
        $this->middleware('guest');
    }
    

    ...或将其附加到路由定义中。

    Route::post('/password/reset', 'ForgotPasswordController@yourFunction')
        ->middleware('throttle:2,5');
    

    参数补充说明:https://www.cloudways.com/blog/laravel-and-api-rate-limiting/

    【讨论】:

      【解决方案2】:

      最好的方法是使用时间比较或漏桶,它只记录最后一个请求。密码重置的时间应该记录在后端,然后可以使用条件来确保在 5 分钟内不能完成两次重置。查看这些示例:

      【讨论】:

      • CloudFlare 的 Sliding Window 相当不错,只需要存储 2 个值和一些简单的数学运算。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-07-12
      • 1970-01-01
      • 1970-01-01
      • 2011-01-24
      • 2015-05-18
      • 2014-05-19
      • 2015-09-09
      相关资源
      最近更新 更多