10

我在 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

4 回答 4

11

这对我也不起作用,因为我使用了 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 中,remember_me 下的“key”现在称为“secret”。

于 2015-02-27T09:46:20.820 回答
5

正如“Adrian C”所说,但有一点改变对我有用。

取而代之的是“密钥”,我使用了“秘密”

 firewalls:
     main:
         ...
         remember_me:
             secret:      "%secret%"
             lifetime: 2592000
             path:     /
             domain:   ~
             user_provider: fos_userbundle
于 2016-03-25T23:20:50.507 回答
2

Remember me如果浏览器无法在您的domain(localhost例如 ) 上设置 cookie,该功能可能无法正常工作。如果是这种情况,请将您的域设置为有效的域名(例如,dev.site.com)。还要确保您已清除缓存。

于 2011-12-28T10:18:14.353 回答
0

添加安全性 remenber_me 配置后,它对我的​​会话生命周期有效:

  framework:
    session:
        default_locale: %locale%
        auto_start:     true
        lifetime:       3600
于 2012-01-15T12:56:19.880 回答