成功した応答にのみレート制限をルートに適用する方法はありますか。たとえば、ユーザーが send/code
エンドポイントにリクエストを 5 回送信し、すべてが成功すると、ユーザーはリクエストを再度送信できなくなります。ただし、そのうち 2 つが失敗し (検証エラーやその他の問題など)、3 つが成功した場合、ユーザーは指定された時間内にさらに 2 回試行する必要があります。
リクエストを実行する前にレート制限チェックを行ってからブロックするか、ユーザーを続行させる必要があることはわかっています。しかし、私のロジックを適用する方法はあるのでしょうか、それとも別のアプローチを試したほうがよいでしょうか?
P粉9869374572024-01-06 17:02:10
これはソースコードです
リーリー}
私の URL が Example.com/test_Rate_Limit_only_success であるとします。
この例では、ユーザーがシステムにリクエストを送信すると、アプリケーションは引き続きリクエストを検証します (エラーが発生した場合、ユーザーは無制限にリクエストを送信します)。データが有効になると、速度制限部分が動作し始めます。
P粉5125267202024-01-06 09:10:49
独自のミドルウェアを作成する必要がある場合がありますが、ThrottleRequests
クラスを拡張して、応答の処理方法をカスタマイズできます。
リーリー
Kernel.php に追加します:
リーリー
リーリー
注:RateLimiter::for から構築されたカスタム応答を返したい場合は、
handleRequestUsingNamedLimiter をオーバーライドする必要がある場合があります。ここではそれについて何もしていません。