Laravel通过throttle中间件和RateLimiter实现API限流,支持固定频率、用户角色差异化限制(如普通用户30次/分钟,VIP 100次),基于Redis提升性能,并可自定义429响应内容,有效防止接口滥用。

Laravel 提供了简单而强大的机制来为 API 设置请求频率限制,防止接口被滥用。默认情况下,Laravel 利用 Redis 或数据库来跟踪用户在指定时间内的请求数量,并自动返回 429 状态码(Too Many Requests)当超过限制时。
Laravel 自带 throttle 中间件,可直接用于 API 路由。你可以在 routes/api.php 中通过中间件参数设置每分钟允许的请求数。
例如,限制每个用户每分钟最多 60 次请求:
其中 60 表示最大请求数,1 表示时间窗口(分钟)。
你可以根据用户的认证状态或角色设置不同的限制。比如普通用户每分钟 30 次,VIP 用户 100 次。
使用闭包定义动态限制:
这段代码应放在 AppServiceProvider@boot 或专门的 Service Provider 中。它会根据用户是否 VIP 应用不同策略,并以用户 ID 或 IP 地址作为识别键。
Laravel 在触发限流时自动返回 429 响应。如需自定义提示信息或头部字段,可在异常处理器中处理 TooManyRequestsException。
打开 app/Exceptions/Handler.php,在 render 方法中添加判断:
如果应用并发量高,建议使用 Redis 作为限流的存储驱动,比数据库更高效。
确保配置文件 config/database.php 中已设置 Redis 连接,然后在 config/cache.php 中将默认缓存驱动设为 redis。
RateLimiter 默认会使用 Laravel 的缓存系统,因此一旦启用 Redis,限流也会自动使用它。
基本上就这些。合理配置限流能有效保护你的 API 不被刷爆,同时兼顾用户体验。关键是根据业务场景选择合适的阈值和识别维度。不复杂但容易忽略细节。
以上就是Laravel如何为API设置请求频率限制(Rate Limiting)的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号