성공적인 응답에만 경로에 속도 제한을 적용하는 방법이 있습니까? 예를 들어 사용자가 send/code
엔드포인트에 5번 요청을 보낸 경우 모두 성공하면 사용자는 다시 요청을 보낼 수 없습니다. 그러나 그 중 2개가 실패하고(예: 유효성 검사 오류 또는 기타 문제) 3개가 성공하는 경우 사용자는 주어진 시간 내에 2번을 더 시도해야 합니다.
요청을 실행하기 전에 속도 제한을 확인한 다음 사용자를 차단하거나 계속하도록 허용하는 방법을 알고 있습니다. 하지만 내 논리를 적용할 수 있는 방법이 있습니까? 아니면 다른 접근 방식을 시도해야 합니까?
소스코드입니다
으아악}
내 URL이 example.com/test_Rate_Limit_only_success라고 가정해 보겠습니다.
이 예에서 사용자가 시스템에 요청을 보내면 애플리케이션은 계속해서 요청의 유효성을 검사합니다(오류가 발생하면 사용자는 무제한 요청을 보냅니다). 데이터가 유효하면 속도 제한 부분이 작동하기 시작합니다.
자신만의 미들웨어를 만들어야 할 수도 있지만
으아아아ThrottleRequests
클래스를 확장하고 응답 처리 방법을 사용자 정의할 수 있습니다.그런 다음 미들웨어를
으아아아Kernel.php
에 추가하세요.그런 다음 원래의 스로틀 미들웨어와 같은 경로에서 사용하세요.
으아아아참고:
RateLimiter::for
构建的自定义响应,您可能必须重写handleRequestUsingNamedLimiter
에서 돌아가고 싶다면 여기서는 아무것도 하지 않았습니다.