gpt4 book ai didi

php - 限制 Ajax 调用的路由,在 Symfony 2.6+ 中可以吗?

转载 作者:行者123 更新时间:2023-12-01 02:54:46 27 4
gpt4 key购买 nike

我正在寻找实现 Ajax 调用“自动”路由限制的最佳方法。现在我正在做如下:

/**
* @Secure(roles="IS_AUTHENTICATED_FULLY")
* @Route("/someRoute", name="someRoute")
* @Method("POST")
*/
public function eliminarFacturasAction(Request $request)
{
$response['success'] = false;
$status = 400;

if ($request->isXmlHttpRequest()) {
// needs to set $response values and $status=200 all the time
} else {
// needs to handle the exception and return Json response
}

return new JsonResponse($response, $status ?: 200);
}

为了避免这种情况,我可以用它来代替吗?

 @Route("/someRoute", 
name="routeName",
condition="request.headers.get('X-Requested-With') == 'XMLHttpRequest'"
)

我仅使用 jQuery 作为 JS 框架,因此 XMLHttpRequest 不会成为问题。如果不通过Ajax调用route,会触发什么样的异常?我可以捕获它并向用户显示消息吗?或者显示某种404页面?

我发现了类似的问题here但我根本不清楚

最佳答案

您可以在 kernel.request 监听器中执行此操作。

class DisallowNonXmlHttpRequestListener
{
public function checkRequest(GetResponseEvent $event)
{
if (!$event->getRequest()->isXmlHttpRequest()) {
throw new AccessDeniedHttpException();
}
}
}

在您的服务配置中:

services:
disallow_non_xml_http_request_listener:
class: DisallowNonXmlHttpRequestListener
tags: [{ name: kernel.event_listener, event: kernel.request, method: checkRequest }]

关于php - 限制 Ajax 调用的路由,在 Symfony 2.6+ 中可以吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27986875/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com