You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何为带参数的Laravel路由按不同IP针对每个ID做限流?

解决Laravel Throttle路由参数ID独立限流问题

当前你的限流规则仅基于用户ID或IP生成标识,没有将路由参数{id}纳入区分条件,导致不同ID的路由共享同一个限流计数器。要实现每个ID独立限流,只需在限流标识中拼接路由参数即可。

修改RouteServiceProvider.php中的限流配置:

RateLimiter::for('visit', function (Request $request) {
    // 拼接用户/IP与路由ID作为唯一限流标识
    $limitKey = $request->user()
        ? $request->user()->id . '_' . $request->route('id')
        : $request->ip() . '_' . $request->route('id');

    return Limit::perHour(1)->by($limitKey);
});

说明

  • $request->route('id')用于获取路由中的{id}参数,确保每个路由ID对应独立的限流规则
  • 拼接后的limitKey会为「用户+路由ID」或「IP+路由ID」生成唯一标识,实现不同ID路由各自每60分钟可访问1次的需求

内容的提问来源于stack exchange,提问作者mahdi hosseini

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.26 05:14:53