Bonjour,

j'ai développé ma propre gestion des utilisateurs, je ne souhaite pas utiliser FOSUserBundle, mon code est donc très proche de celui décrit ici (https://www.wanadev.fr/kit-survie-ge...fosuserbundle/)

J'ai également une fonction "se souvenir de moi" lors de la connexion, qui marchait tres bien, jusqu'au jour où j'ai décidé de rendre le site multi-langues, en ajoutant la locale dans toutes les URLS.
A partir de là, la récupération de l'utilisateur "automatique" via le cookie remember me ne fonctionne plus, pourtant le cookie est bien créé lors de l'authentification.

Un peut de code :

Le 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
 
member_area:
            pattern:   ^/{_locale}/member
            anonymous: false
            provider:  main
            context:   member_area
            form_login:
                login_path: register_index
                check_path: register_login
            remember_me:
                key:       %secret% # %secret% est un paramètre de parameters.yml
                lifetime:  2592000 # 30 days
                path:      /
                domain:    ~ # Prend la valeur par défaut du domaine courant depuis $_SERVER
                name:      REMEMBERME
                always_remember_me: true
                remember_me_parameter: _remember_me
La création du cookie lors de l'authentification :

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
 
$token = new UsernamePasswordToken($user, $user->getPassword(), 'member_area', array('ROLE_USER'));
	        $this->get("security.context")->setToken($token);
 
	        $response = new RedirectResponse($this->generateUrl('user_index'));
 
	        if ($request->get('_remember_me') == 'on'){
 
				// write cookie for persistent session storing
				$providerKey = 'main'; // defined in security.yml
				$securityKey = $this->container->getParameter('secret');// defined in security.yml
 
				$rememberMeService = new TokenBasedRememberMeServices(array($this->getDoctrine()->getManager()->getRepository('UserBundle:User')), $securityKey, $providerKey, array(
				                'path' => '/',
				                'name' => 'REMEMBERME',
				                'domain' => null,
				                'secure' => false,
				                'httponly' => true,
				                'lifetime' => 2592000, // 30 days
				                'always_remember_me' => true,
				                'remember_me_parameter' => '_remember_me')
				            );
 
				$rememberMeService->loginSuccess($request, $response, $token);
			} else {
				$response->headers->clearCookie('REMEMBERME');
			}
 
	        $event = new InteractiveLoginEvent($request, $token);
        	$this->get("event_dispatcher")->dispatch("security.interactive_login", $event);
 
        	return $response;
Le routing.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
 
user:
    resource: "@UserBundle/Resources/config/routing.yml"
    prefix:   /{_locale}/member
    requirements:
        _locale: "[a-zA-Z0-9]{2}"
 
root:
    pattern: /
    defaults:
        _controller: FrameworkBundle:Redirect:urlRedirect
        path: /%locale%/
        permanent: true
 
core:
    resource: "@CoreBundle/Resources/config/routing.yml"
    prefix:   /{_locale}
    requirements:
        _locale: "[a-zA-Z0-9]{2}"
Il y a autre chose d'étrange surement lié a ce probleme, le systeme de redirection automatique "login_path" vers la page de login quand on essaye d'entrer dans une zone protégée sans authorisation ne fonctionne plus depuis que j'ais mis en place les locales dans les Urls.

Il y a bien une erreur symfony "Authorisation invalide" mais pas de redirection vers la page de login, alors qu'avant sans le syteme multilangues et les locales dans les Urls, tout ça marchait tres bien...

Merci de votre aide, je ne comprends pas d'où ça peut venir, si vous avez besoin de plus d'infos n'hesitez pas....