>  Q&A  >  본문

성공적인 요청에 대해서만 속도 제한(Laravel 9)

성공적인 응답에만 경로에 속도 제한을 적용하는 방법이 있습니까? 예를 들어 사용자가 send/code 엔드포인트에 5번 요청을 보낸 경우 모두 성공하면 사용자는 다시 요청을 보낼 수 없습니다. 그러나 그 중 2개가 실패하고(예: 유효성 검사 오류 또는 기타 문제) 3개가 성공하는 경우 사용자는 주어진 시간 내에 2번을 더 시도해야 합니다.

요청을 실행하기 전에 속도 제한을 확인한 다음 사용자를 차단하거나 계속하도록 허용하는 방법을 알고 있습니다. 하지만 내 논리를 적용할 수 있는 방법이 있습니까? 아니면 다른 접근 방식을 시도해야 합니까?

P粉807239416P粉807239416311일 전472

모든 응답(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에서 돌아가고 싶다면 여기서는 아무것도 하지 않았습니다. < /p>

    회신하다
    0
  • 취소회신하다