Bonjour,

Voila je rencontre un petit problème avec mon code. J'ai implementé la fonction remember me qui n'est que quelques lignes dans le security.yml et cela fonctionne qu'en local.
Quand je teste sur le serveur live, le rememberme cookie est bien créé.
Mais quand je ferme et ouvre à nouveau mon navigateur, je ne suis pas auto logué alors qu'en local cela fonctionne très bien.

security:

    encoders:
            FOS\UserBundle\Model\UserInterface: sha512

    role_hierarchy:
        ROLE_ADMIN:       [ROLE_USER, ROLE_SONATA_ADMIN]
        ROLE_SUPER_ADMIN: ROLE_ADMIN

    # http://symfony.com/doc/current/book/security.html#where-do-users-come-from-user-providers
    providers:
        fos_userbundle:
            id: fos_user.user_provider.username_email
        in_memory:
            memory: ~
        token_provider:
            mongodb: {class: Ribambel\UserBundle\Document\User, property: id}

    firewalls:
        # disables authentication for assets and the profiler, adapt it according to your needs
        dev:
            pattern: ^/(_(profiler|wdt)|css|images|js)/
            security: false

        main:
            pattern: ^/
            form_login:
                provider: fos_userbundle
                csrf_provider: security.csrf.token_manager # Use form.csrf_provider instead for Symfony <2.4
                failure_path: register # since the login form is on the same page with the register form
                success_handler: ribambel_user.authentication_handler
                failure_handler: ribambel_user.authentication_handler
            logout:
                path: /logout
                success_handler: ribambel_user.authentication_handler
            remember_me:
                secret: '%secret%'
                lifetime: 31536000  # 365 days in seconds
                path: /
                domain: ~
            anonymous:    true
            guard:
                authenticators:
                    - ribambel_user.token_authenticator

    access_control:
        - { path: ^/login$, role: IS_AUTHENTICATED_ANONYMOUSLY }
        - { path: ^/register, role: IS_AUTHENTICATED_ANONYMOUSLY }
        - { path: ^/resetting, role: IS_AUTHENTICATED_ANONYMOUSLY }
        - { path: ^/moncompte, role: ROLE_USER }
        - { path: ^/admin/, role: ROLE_ADMIN }
#        - { path: ^/api/v1/users, role: IS_AUTHENTICATED_ANONYMOUSLY }
#        - { path: ^/api/v1/brands, role: IS_AUTHENTICATED_ANONYMOUSLY }
#        - { path: ^/api/v1/likes/avg, role: IS_AUTHENTICATED_ANONYMOUSLY }
        - { path: ^/api/v1, role: IS_AUTHENTICATED_ANONYMOUSLY }
        - { path: ^/(panier)(?!/impressions), role: ROLE_USER }

Quel peut être le problème car tout semble ok dans le code? A moins que quelque chose m'échappe.

3 réponses


session:
        handler_id: ~
        cookie_lifetime: 15778800

tu a rajouter ça dans ton framework.yaml ?

Cela est du au paramètre "session.cookie_lifetime" de ton php.ini. S'il est à 0, le cookie s'efface à la fermeture du navigateur.
Solution 1: modifier la durée de vie du cookie dans le php.ini
Solution 2: modifier la durée de vie du cookie via SF (ce qu'a proposé @Crown Backend)

Et à mon sens, la solution N° 2 (proposée par @Crown Backend) est la meilleure...

Oui je trouve c'est mieux de modifier le cookie en lui même parce que aller modifier le PHP.ini c'est pas toujours bon !
enjoy !