Gibt es eine Möglichkeit, eine Ratenbegrenzung auf eine Route anzuwenden, jedoch nur bei erfolgreichen Antworten. Wenn der Benutzer beispielsweise fünfmal eine Anfrage an den send/code
-Endpunkt sendet und alle erfolgreich sind, wird der Benutzer daran gehindert, die Anfrage erneut zu senden. Wenn jedoch zwei davon fehlschlagen (z. B. ein Validierungsfehler oder ein anderes Problem), drei jedoch erfolgreich sind, sollte der Benutzer es innerhalb der vorgegebenen Zeit noch zweimal versuchen.
Ich weiß, dass man vor der Ausführung der Anfrage eine Überprüfung des Ratenlimits durchführen und den Benutzer dann blockieren oder weitermachen lassen kann. Aber gibt es eine Möglichkeit, meine Logik anzuwenden, oder sollte ich einen anderen Ansatz ausprobieren?
这是源代码
}
假设我的网址是 Example.com/test_Rate_Limit_only_success。
在此示例中,当用户向系统发送请求时,应用程序仍会验证该请求(如果出现错误,用户将发送无限制的请求)。在数据有效的情况下,限速部分将开始工作。
您可能需要制作自己的中间件,但您可以扩展
ThrottleRequests
类并自定义您想要处理响应的方式:然后将您的中间件添加到
Kernel.php
:然后像原来的throttle中间件一样在路由中使用它:
注意:如果您想返回从
RateLimiter::for
构建的自定义响应,您可能必须重写handleRequestUsingNamedLimiter
,我在这里没有为此做任何事情。