你好,我正在使用 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'); }
2 回答
元芳怎么了
TA贡献1798条经验 获得超7个赞
您可以使用 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/
FFIVE
TA贡献1797条经验 获得超6个赞
最好的方法是使用时间比较或漏桶,它只记录最后一个请求。密码重置的时间应记录在后端,然后可以使用条件来确保在 5 分钟内不会完成两次重置。查看这些示例:
时间比较器
漏桶法
- 2 回答
- 0 关注
- 113 浏览
添加回答
举报
0/150
提交
取消