symfony在响应中覆盖状态代码
我正在开发一个symfony2.8web应用程序,在这个应用程序中,我需要在ajax请求上返回403json响应,即使用户没有登录,也需要重定向。为了解决这个问题,我使用了一个监听器:symfony在响应中覆盖状态代码,symfony,Symfony,我正在开发一个symfony2.8web应用程序,在这个应用程序中,我需要在ajax请求上返回403json响应,即使用户没有登录,也需要重定向。为了解决这个问题,我使用了一个监听器: class AccessDeniedListener { public function onAccessDeniedException(GetResponseForExceptionEvent $event) { if ($event->getException()->getCode()
class AccessDeniedListener {
public function onAccessDeniedException(GetResponseForExceptionEvent $event) {
if ($event->getException()->getCode() === 403
&& $event->getRequest()->isXmlHttpRequest()) {
$event->setResponse(new JsonResponse(['foo' => 'bar']), 403);
$event->stopPropagation();
}
}
}
并将优先级设置为高于默认值的ExceptionListener
它工作正常,但当我发出AJAX请求时,我得到的是预期的内容,而不是状态码(改为500)
所以我的问题是。。。我做错了什么或者我错过了什么。。。谢谢。经过长时间的调试,我发现了错误。我觉得自己很傻 我的密码是
$event->setResponse(new JsonResponse(['foo' => 'bar']), 403);
反而
$event->setResponse(new JsonResponse(['foo' => 'bar'], 403));
另外,通过设置对事件的响应,它会停止传播。检查测试环境的日志。可能发生了一些奇怪的事情。。。
$event->setResponse(new JsonResponse(['foo' => 'bar'], 403));