對於我的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