ホームページ  >  に質問  >  本文

成功したリクエストのみのレート制限 (Laravel 9)

成功した応答にのみレート制限をルートに適用する方法はありますか。たとえば、ユーザーが send/code エンドポイントにリクエストを 5 回送信し、すべてが成功すると、ユーザーはリクエストを再度送信できなくなります。ただし、そのうち 2 つが失敗し (検証エラーやその他の問題など)、3 つが成功した場合、ユーザーは指定された時間内にさらに 2 回試行する必要があります。

リクエストを実行する前にレート制限チェックを行ってからブロックするか、ユーザーを続行させる必要があることはわかっています。しかし、私のロジックを適用する方法はあるのでしょうか、それとも別のアプローチを試したほうがよいでしょうか?

P粉807239416P粉807239416311日前473

全員に返信(2)返信します

  • P粉986937457

    P粉9869374572024-01-06 17:02:10

    これはソースコードです

    リーリー

    }

    私の URL が Example.com/test_Rate_Limit_only_success であるとします。

    この例では、ユーザーがシステムにリクエストを送信すると、アプリケーションは引き続きリクエストを検証します (エラーが発生した場合、ユーザーは無制限にリクエストを送信します)。データが有効になると、速度制限部分が動作し始めます。

    返事
    0
  • P粉512526720

    P粉5125267202024-01-06 09:10:49

    独自のミドルウェアを作成する必要がある場合がありますが、ThrottleRequests クラスを拡張して、応答の処理方法をカスタマイズできます。 リーリー

    次に、ミドルウェアを

    Kernel.php に追加します: リーリー

    その後、元のスロットル ミドルウェアと同様にルーティングで使用します:

    リーリー

    注:

    RateLimiter::for から構築されたカスタム応答を返したい場合は、handleRequestUsingNamedLimiter をオーバーライドする必要がある場合があります。ここではそれについて何もしていません。

    返事
    0
  • キャンセル返事