Bonjour
Je veux customiser le comportement de Symfony2 quand une excpetion AccessDeniedException est levée. Par défaut une redirection 302 est faite ce qui est très bien quand l'excpetion est levé du fait d'une requête HTTP standard mais qui pose problème quand la requête est en XMLHTTPRequest.
Je veux pouvoir en réponse à l'AccessDeniedException envoyer en fonction de la requête qui lève l'exception soit un redirect soit un objet json.
Symfony2 définit justement le paramètre access_denied_handler dans security.yml pour effectuer ce traitement mais dans mon cas je constate que mon impléemntation d'AccessDeneidHandelr n'est jamais appelé. Pourquoi ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5#security.yml firewalls: secured_area: access_denied_handler: kernel.listener.access_denied.handler
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 #config.yml kernel.listener.access_denied.handler: class: NoaLisa\Bundle\OVMBundle\DependencyInjection\AccessDeniedHandler tags: - { name: kernel.event_listener, event: security.kernel_response, method: handle}
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 #AccessDeniedHandler class AccessDeniedHandler implements AccessDeniedHandlerInterface{ function handle(Request $request, AccessDeniedException $accessDeniedException){ if ($request->isXmlHttpRequest()) { $response = new Response(json_encode(array('status' => 'protected'))); return $response; } else { return new RedirectResponse($this->router->generate('login')); } } }
Partager