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