FOSUserBundle并记住我

时间:2011-12-27 21:19:08

标签: symfony remember-me fosuserbundle

我在Symfony2中使用FOSUserBundle进行身份验证。一切正常,除了“记住我”。我的security.yml看起来像这样:

security:
providers:
    fos_userbundle:
        id: fos_user.user_manager

encoders:
    'FOS\UserBundle\Model\UserInterface': sha512

firewalls:
    main:
        pattern: ^/
        form_login:
            provider: fos_userbundle
        logout:       true
        anonymous:    true
        remember_me:
            key:      aSecretKey
            lifetime: 3600
            path:     /
            domain:   ~

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

role_hierarchy:
    ROLE_ADMIN:       ROLE_USER
    ROLE_SUPER_ADMIN: ROLE_ADMIN

有人知道如何解决这个问题。

4 个答案:

答案 0 :(得分:10)

这对我不起作用,因为我使用了2个用户提供商:FOSUserBundle和FosFacebook。

实际上已经设置了cookie,但是在TokenBasedRememberMeServices中,processAutoLoginCookie我看到使用了错误的提供程序。

要修复它,我必须在remember_me部分的security.yml中指定我想要使用的提供程序。

firewalls:
    main:
        ...
        remember_me:
            secret:      "%secret%"
            lifetime: 2592000
            path:     /
            domain:   ~
            user_provider: fos_userbundle

也许这也有助于其他人。

更新:我已经修改了响应,因为在较新版本的Symfony中," key"在remember_me下现在被称为"秘密"。

答案 1 :(得分:5)

正如“阿德里安C”所说,但有一点变化对我有用。

而不是“钥匙”我使用“秘密”

<i class="fa fa-hand-spock-o"></i>

答案 2 :(得分:2)

如果浏览器无法在Remember me(例如domain)上设置Cookie,则

localhost功能可能无效。如果是这种情况,请将您的域设置为有效的域名(例如,dev.site.com)。还要确保已清除缓存。

答案 3 :(得分:0)

除了安全性remenber_me配置之外,它还适用于会话生命周期:

  framework:
    session:
        default_locale: %locale%
        auto_start:     true
        lifetime:       3600