Symfony 5.4.12 déconnexion du user en rememberme si le formulaire de modification du user est invalide 2 fois
Bonjour à tous,
Sur mon site, j'ai une page où les visiteurs peuvent s'enregistrer et se créer un compte en ROLE_USER, qui est stocké dans la table user en base.
Un fois connecté avec ce compte, où j'ai paramétré dans mon security.yaml always_remember_me: true, je vois bien dans le profiler le mail qui sert d'identifiant.
Sur une page dans mon espace connecté, je peux modifier mon profil dans un formulaire qui me permet de modifier chaque champ de mon user en base (email, mot de passe, nom, prénom, tel...).
Je fais exprès de saisir des valeurs bloquantes (saisies trop longues par rapport aux assert de mon champ, mot de passe qui ne respecte pas mes règles (longueur minimale, minimum 1 minuscule, 1 majuscule, et 1 autre caractère), 2 champs du mot de passe en repeatedtype qui ne correspondent pas...).
Pour ce test, je ne change pas l'email, je garde celui qui est connecté.
Au premier clic sur mon bouton pour envoyer mon formulaire, j'ai bien le flashbag de mon controller qui me dit que mes saisies sont invalides, ainsi que l'erreur de mon assert.
Je ne change rien à mes saisies, je laisse mes valeurs bloquantes, et j'envoie une 2eme fois mon formulaire.
Résultat attendu : j'ai le même message qu'au premier envoi.
Résultat obtenu : j'ai un redirect vers ma page de login, et je ne suis plus connecté.
Dans le profiler, je vois bien le redirect, et dans le Response Headers, je vois :
Citation:
set-cookie "REMEMBERME=deleted; expires=Sun, 29-Aug-2021 15:43:53 GMT; Max-Age=0; path=/; httponly; samesite=lax"
Et je suis bloqué là, je ne m'en sors pas !
Vous avez une idée pourquoi mon REMEMBERME est supprimé ?
Je pense à une piste : Est ce que c'est parce que dans mon formulaire l'email est éditable, ce qui fait que je perds ma connexion ? Si c'est ça, comment gérer ce cas ?
J'espère que mon problème est compréhensible, si ce n'est pas clair, dites le moi.
Si ça vous est utile, je peux mettre des km de code, pour l'instant, voici mon security.yaml :
Code:
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
| security:
enable_authenticator_manager: true
password_hashers:
Symfony\Component\Security\Core\User\PasswordAuthenticatedUserInterface: 'sha512'
App\Entity\User:
algorithm: sha512
role_hierarchy:
ROLE_ADMIN: ROLE_USER
providers:
app_user_provider:
entity:
class: App\Entity\User
firewalls:
dev:
pattern: ^/(_(profiler|wdt)|css|images|js)/
security: false
main:
lazy: true
provider: app_user_provider
form_login:
login_path: app_login
check_path: app_login
enable_csrf: true
username_parameter: email
password_parameter: password
logout:
path: /logout
target: index
remember_me:
secret: '%kernel.secret%'
always_remember_me: true
access_control:
- { path: ^/login, roles: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/profil, roles: ROLE_USER }
- { path: ^/admin, roles: ROLE_ADMIN } |
Merci d'avance pour votre aide !