symfony2登录记住我

时间:2013-03-19 16:04:56

标签: symfony

我正在尝试在Symfony2记住我登录时实现功能。

我有这个配置文件security.yml

security:

    firewalls:
        frontend:
            pattern:  ^/
            anonymous: ~
            form_login:
                login_path: /login
                check_path: /login_check
                default_target_path: /index
                success_handler: authentication_handler
            logout:
                path: /logout
                target: /login
                success_handler: authentication_handler
            security: true
            remember_me:
                key:      "%secret%"
                lifetime: 120
                path:     /
            access_denied_handler: accessdenied_handler
          #primero deben de ir los usuarios anonimos si no se entra en loop redirect
    access_control:
        - { path: /login, roles: IS_AUTHENTICATED_ANONYMOUSLY }
        - { path: ^/js, roles: IS_AUTHENTICATED_ANONYMOUSLY }
        - { path: ^/admin, roles: ROLE_A }
        - { path: ^/nuevoinforme, roles: ROLE_M }
        - { path: ^/, roles: IS_AUTHENTICATED_REMEMBERED }

    providers:
        user_db:
            entity: { class: mio\mioBundle\Entity\Empleado, property: username }
    role_hierarchy:
        ROLE_M: ROLE_U
        ROLE_A: ROLE_U

    encoders:
        mio\mioBundle\Entity\Empleado: { algorithm: sha1 }
        Symfony\Component\Security\Core\User\User: plaintext

当我登录时,cookie正确存储在客户端上。但是,120秒后,在尝试访问另一个URL时,它仍然认为客户端已登录,而我希望它会被注销,因此我希望客户端可以重定向到/login

如何解决此问题?

1 个答案:

答案 0 :(得分:0)

您将remember_me lifetime设置为120,因此Cookie会在2分钟后过期。

您应该将生命周期值设置为大于一天。

security:
    firewalls:
        frontend:
            remember_me:
                lifetime: 120 # this value should be greater than 120 seconds

我删除了其余参数,以便您可以看到我在说什么。