仅成功请求的速率限制 (Laravel 9)
P粉807239416
P粉807239416 2024-01-05 19:47:03
[PHP讨论组]

是否有办法对路线应用速率限制,但仅限于成功响应。例如,如果用户向 send/code 端点发送请求 5 次,如果全部成功,则阻止用户再次发送请求。但是,如果其中 2 次失败(例如验证错误或其他问题),但 3 次成功,则用户应该在给定时间内再尝试 2 次。

我知道在执行请求之前进行速率限制检查,然后阻止或让用户继续。但是有没有办法应用我的逻辑,或者我应该尝试不同的方法?

P粉807239416
P粉807239416

全部回复(1)
P粉986937457

这是源代码

use Illuminate\Support\Facades\RateLimiter;

class CodeZiDotProTestRateLimit extends Controller{
public function test_rate_limit_only_success(Request $request){

    // Step 1: Validate the request data
    $validator = Validator::make($request->all(), [
        'name' => 'required|string',
        'email' => 'required|email',
        'password' => 'required|min:8',
    ]);

    if ($validator->fails()) {
        return response()->json(['errors' => $validator->errors()], 422);
    }

    // Step 2: Apply rate limiting to this controller action
    $key = 'test_rate_limit_only_success_by_ip_'.request()->ip();
    if (RateLimiter::tooManyAttempts($key,10)) {
        return response()->json(['errors' => 'You have made too much in a short time. Please wait after 1 minute'], 422);
    } else {
        RateLimiter::hit($key, 60);
    }
}

}

假设我的网址是 Example.com/test_Rate_Limit_only_success。

在此示例中,当用户向系统发送请求时,应用程序仍会验证该请求(如果出现错误,用户将发送无限制的请求)。在数据有效的情况下,限速部分将开始工作。

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号