2017-05-23 2 views
1

J'utilise FOSUserBundle avec email comme nom d'utilisateur. Essayez d'utiliser la fonctionnalité remember_me mais cela ne fonctionne pas. J'ai lu ceci Symfony2: "Remember me" tries to authenticate by username instad of emailSymfony FOSUserBundle Rappelez-moi ne fonctionne pas

Il s'agit d'un article assez ancien et le champ de nom d'utilisateur dans la base de données est défini avec la même valeur que l'e-mail, donc je ne comprends pas pourquoi cela ne fonctionne pas.

Vérification avec Google Chrome Inspecteur cookie rememberme est réglé ...

Quelqu'un peut-il aider?

Ceci est mon security.yaml

providers: 
     fos_userbundle: 
      id: fos_user.user_provider.username_email 

    firewalls: 
     main: 
      pattern: ^/ 
      form_login: 
       provider: fos_userbundle 
       csrf_token_generator: security.csrf.token_manager 
      logout:  true 
      anonymous: true 
      remember_me: 
       secret: '%secret%' 
       lifetime: 604800 # 1 week in seconds 
       path: /
     # disables authentication for assets and the profiler, adapt it according to your needs 
     dev: 
      pattern: ^/(_(profiler|wdt)|css|images|js)/ 
      security: false 

    access_control: 
     - { path: ^/$, role: IS_AUTHENTICATED_FULLY } 
     - { path: ^/login$, role: IS_AUTHENTICATED_ANONYMOUSLY } 
     - { path: ^/register, role: IS_AUTHENTICATED_ANONYMOUSLY } 
     - { path: ^/resetting, role: IS_AUTHENTICATED_ANONYMOUSLY } 
     - { path: ^/account/*, role: IS_AUTHENTICATED_FULLY } 
     - { path: ^/admin/*, role: ROLE_ADMIN } 

Répondre

1

Ok, il est un problème de configuration rôle.

Selon le documentation:

  • IS_AUTHENTICATED_ANONYMOUSLY: Tous les utilisateurs (même les anonymes) ont cette

  • IS_AUTHENTICATED_REMEMBERED: Tous les utilisateurs connectés ont ce, même s'ils sont connectés en raison d'un "souvenir de moi cookie". Même si vous n'utilisez pas me rappeler la fonctionnalité, vous pouvez l'utiliser pour vérifier si l'utilisateur est connecté

  • IS_AUTHENTICATED_FULLY. Ceci est similaire à IS_AUTHENTICATED_REMEMBERED, mais plus fort. Les utilisateurs qui sont connectés
    uniquement en raison d'un cookie "Mémoriser mes cookies" auront
    IS_AUTHENTICATED_REMEMBERED mais n'auront pas IS_AUTHENTICATED_FULLY.

Alors, dans mon security.yml, essayant d'accéder au chemin "^/$" et "^/compte/*" après la fermeture du navigateur n'a pas été possible en raison de la IS_AUTHENTICATED_FULLY demande.

Je l'ai changé dans ce

access_control: 
     - { path: ^/$, roles: IS_AUTHENTICATED_REMEMBERED } 
     - { path: ^/login$, roles: IS_AUTHENTICATED_ANONYMOUSLY } 
     - { path: ^/register, roles: IS_AUTHENTICATED_ANONYMOUSLY } 
     - { path: ^/resetting, roles: IS_AUTHENTICATED_ANONYMOUSLY } 
     - { path: ^/account/*, roles: IS_AUTHENTICATED_FULLY } 
     - { path: ^/admin/*, roles: [IS_AUTHENTICATED_FULLY, ROLE_ADMIN] } 

je peux maintenant accéder au chemin "^/de $" avec le cookie de rememberme mais pas "^/compte/" et « ^/admin/ "qui sont plus restrictives à cause des données sensibles (et c'est exactement ce que je voulais).