le but est de pouvoir rediriger ou l'on veut après un login ou un logout.
avec le login ça fonctionne, je suis bien redirigé là ou je veux par contre avec le logout, rien ne se passe.(je me retrouve toujours à la page d'acceuil)
le service acme_logout_success_handler est bien actif (app/console container:debug)
je ne sais pas pourquoi lorsque je me déconnecte il ne va pas dans : onLogoutSuccess(Request $request)
ni même dans la classe : LogoutSuccessHandler
app/config.yml
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 services: ... acme_login_success_handler: class: Acme\UserBundle\Component\Authentication\Handler\LoginSuccessHandler arguments: [@router, @security.context] tags: - { name: 'monolog.logger', channel: 'security' } acme_logout_success_handler: class: Acme\UserBundle\Component\Authentication\Handler\LogoutSuccessHandler arguments: [@service_container, @router] tags: - { name: 'monolog.logger', channel: 'security' }
security.yml
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
17
18
19
20
21
22
23
24
25
26
27 ... firewalls: dev: pattern: ^/(_(profiler|wdt)|css|images|js)/ security: false # Firewall principal pour le reste de notre site main: #pattern: .* form_login: provider: fos_userbundle login_path: /login use_forward: false check_path: /login_check success_handler: acme_login_success_handler failure_path: null logout: path: /logout target: / success_handler: acme_logout_success_handler anonymous: true remember_me: key: %secret% # On définit la clé pour le remember_me (%secret% est un parametre de parameters.ini) anonymous: true # On autorise les utilisateurs anonymes (non identifiés) logout: true # On autorise la déconnexion manuelle (désactivé par défaut)
Acme\UserBundle\Component\Authentication\Handler\LoginSuccessHandler.pchp
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
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45 <?php namespace Acme\UserBundle\Component\Authentication\Handler; use Symfony\Component\Security\Http\Authentication\AuthenticationSuccessHandlerInterface; use Symfony\Component\Security\Core\Authentication\Token\TokenInterface; use Symfony\Component\Security\Core\SecurityContext; use Symfony\Component\HttpFoundation\Request; use Symfony\Component\HttpFoundation\RedirectResponse; use Symfony\Component\Routing\Router; class LoginSuccessHandler implements AuthenticationSuccessHandlerInterface { protected $router; protected $security; public function __construct(Router $router, SecurityContext $security) { $this->router = $router; $this->security = $security; } public function onAuthenticationSuccess(Request $request, TokenInterface $token) { if ($this->security->isGranted('ROLE_SUPER_ADMIN')) { $response = new RedirectResponse($this->router->generate('category_index')); } elseif ($this->security->isGranted('ROLE_ADMIN')) { $response = new RedirectResponse($this->router->generate('category_index')); } elseif ($this->security->isGranted('ROLE_USER')) { // redirect the user to where they were before the login process begun. $referer_url = $request->headers->get('referer'); $response = new RedirectResponse($referer_url); } return $response; } }
Acme\UserBundle\Component\Authentication\Handler\LogoutSuccessHandler.pchp
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
17
18
19
20
21
22
23
24
25
26
27
28 <?php namespace Acme\UserBundle\Component\Authentication\Handler; use Symfony\Component\Security\Http\Logout\LogoutSuccessHandlerInterface; use Symfony\Component\HttpFoundation\Request; use Symfony\Component\HttpFoundation\RedirectResponse; use Symfony\Bundle\FrameworkBundle\Routing\Router; class LogoutSuccessHandler implements LogoutSuccessHandlerInterface { protected $router; public function __construct(Router $router) { $this->router = $router; } public function onLogoutSuccess(Request $request) { $response = new RedirectResponse($this->router->generate( 'acme_ztest' )); return $response; } }
Partager