对于我的Web服务使用FOSRestBundle,我创建了一个防火墙,强制登录访问应用程序。Symfony2防火墙和FOSRestBundle
我的问题是,当我通过ajax调用API时,我需要得到错误代码401,当用户没有通过身份验证,而不是接收登录表单的html源代码。我如何配置应用程序?
secured_area:
pattern: ^/
form_login:
provider: fos_userbundle
use_forward: false
default_target_path: /w
logout:
path: /logout
target: /login
编辑:
感谢瑞安这里是KernelExceptionListener方法。
public function onKernelException(GetResponseForExceptionEvent $event) {
// get exception
$exception = $event->getException();
// get path
$path = $event->getRequest()->getPathInfo();
if ($exception instanceOf AuthenticationException && ($event->getRequest()->isXmlHttpRequest() || strpos($path, '/api') === 0)) {
$response = new Response();
$response->setStatusCode(401);
$event->setResponse($response);
$event->stopPropagation();
}
}
很高兴你的工作。我在FOSRestBundle#411上创建了一个新问题,希望能够将此功能作为该包的一部分提供。 https://github.com/FriendsOfSymfony/FOSRestBundle/issues/411 – Ryan 2013-03-26 22:02:07