如果$ request-> isXmlHttpRequest,如何检查整个捆绑包?

问题描述 投票:0回答:1

对于一个项目,我为每个捆绑使用FOSrestbundle,我有一个ApiBundle,其中每个路由都由ajax调用。在每个动作,我做这个检查:

if $request->isXmlHttpRequest() {
    throw ...
}

我想找到一种方法来对整个捆绑进行一次检查。

谢谢

ajax fosrestbundle symfony-3.4
1个回答
0
投票

我在这里为那些想要做同样事情的人提供了解决方案

在ApiBundle的每个控制器中,我把这个注释确保每个路由名称都有相同的'api_'前缀

/**
 * Class SomeController.
 *
 * @Route("/some", name="api_")
 */
class SomeController extends Controller

在请求事件监听器中,我将此检查放在KernelEvents :: REQUEST事件上

$request = $event->getRequest();

if (!$event->isMasterRequest()) {
    return;
}

if ('api_' === substr($request->get('_route'), 0, 4) && !$request->isXmlHttpRequest()) {
    throw new MethodNotAllowedException(['ajax']);
}
© www.soinside.com 2019 - 2024. All rights reserved.