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

如何在CakePHP 5中禁用API的Csrf防护?

为带API前缀的POST/PUT请求禁用CSRF保护

如果你的项目已添加API前缀路由,想要为POST、PUT类型的API请求关闭CSRF保护,可按以下步骤操作:

1. 在config/routes.php中配置API前缀路由

$routes->prefix('api', function (RouteBuilder $routes): void {
    $routes->setExtensions(['json', 'xml']);
    $routes->connect(
        '/token',
        ['controller' => 'Users', 'action' => 'token']
    )->setMethods(['POST']);
    $routes->resources('Users');
    $routes->resources('Pages');
});

2. 修改src/Application.php中的中间件配置

public function middleware(MiddlewareQueue $middlewareQueue): MiddlewareQueue
{
    $csrf = new CsrfProtectionMiddleware(['httponly' => true]);

    // 为API路由跳过CSRF检查
    // 当回调返回true时,将跳过Token验证
    $csrf->skipCheckCallback(function ($request) {
        // 对API前缀的URL跳过Token检查
        if ($request->getParam('prefix') === 'Api') {
            return true;
        }
    });

    // 其他中间件配置...

    ->add($csrf);
    return $middlewareQueue;
}

上述代码已测试确认可正常运行。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.29 15:43:15