如何在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
相关产品推荐
相关产品推荐

