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

修改Statamic CMS REST API速率限制遇阻求助

解决Statamic REST API速率限制修改问题

你的核心问题是自定义路由覆盖了Statamic原生API路由,导致请求无法正确转发到Statamic的API控制器,同时触发了不必要的重复速率限制校验。以下是正确的修改步骤:

1. 移除多余的自定义路由

删除routes/web.php中你添加的所有API路由代码——Statamic已经自动注册了自己的API路由,不需要手动覆盖拦截。

2. 修正RouteServiceProvider配置

你的RouteServiceProvider.php逻辑方向正确,可简化后保留核心配置:

<?php

namespace App\Providers;

use Illuminate\Cache\RateLimiting\Limit;
use Illuminate\Foundation\Support\Providers\RouteServiceProvider as ServiceProvider;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\RateLimiter;
use Illuminate\Support\Facades\Log;

class RouteServiceProvider extends ServiceProvider
{
    public function boot()
    {
        $this->configureRateLimiting();

        parent::boot();
    }

    protected function configureRateLimiting()
    {
        Log::channel('single')->info('configureRateLimiting function fired');
        RateLimiter::for('api', function (Request $request) {
            Log::channel('single')->info('rate limit fired');
            // 替换为你需要的限制规则,示例:认证用户100次/分钟,游客50次/分钟
            return $request->user()
                ? Limit::perMinute(100)->by($request->user()->id)
                : Limit::perMinute(50)->by($request->ip());
        });
    }
}

3. 确认Statamic API的默认中间件

Statamic的REST API默认已启用throttle:api中间件(默认限制60次/分钟),只要你修改了api键对应的速率规则,就会自动应用到所有Statamic API端点上。

4. 清除缓存并测试

执行命令清除Laravel缓存,确保配置生效:

php artisan cache:clear
php artisan route:clear

之后多次请求Statamic API,观察速率限制是否按你设置的规则生效。

进阶:单独为Statamic API设置速率限制

如果不想修改全局api速率限制,只想针对Statamic API单独配置:

  1. 在RouteServiceProvider中新增自定义速率限制键:
RateLimiter::for('statamic-api', function (Request $request) {
    return $request->user()
        ? Limit::perMinute(200)->by($request->user()->id)
        : Limit::perMinute(100)->by($request->ip());
});
  1. 复制vendor/statamic/cms/config/api.php到项目config/statamic/api.php目录,修改middleware数组:
'middleware' => [
    'api',
    'throttle:statamic-api', // 替换原有的throttle:api
    \Statamic\Http\Middleware\Api\Authenticate::class,
],

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.14 15:05:57