FOSUserBundle и запомни меня - PullRequest
       19

FOSUserBundle и запомни меня

9 голосов
/ 28 декабря 2011

Я использую FOSUserBundle для аутентификации в Symfony2. Все отлично работает, кроме "запомнить меня". Мой 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 ]

10 голосов
/ 27 февраля 2015

Это не сработало и для меня, потому что я использовал 2 пользовательских провайдера: FOSUserBundle и FosFacebook.

Файл cookie фактически был установлен, но в TokenBasedRememberMeServices, processAutoLoginCookie я обнаружил, что используется неправильный поставщик.

Чтобы исправить это, мне нужно было указать в security.yml в разделе Remember_me поставщикая хотел бы использовать.

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

Может быть, это поможет кому-то еще.

Обновление : я изменил ответ, так как в более новых версиях Symfony "ключ "под запомнить" теперь называется "секретным".

5 голосов
/ 26 марта 2016

Как сказал «Адриан С», но с небольшим изменением, которое сработало для меня.

вместо «ключа» я использовал «секрет»

 firewalls:
     main:
         ...
         remember_me:
             secret:      "%secret%"
             lifetime: 2592000
             path:     /
             domain:   ~
             user_provider: fos_userbundle
2 голосов
/ 28 декабря 2011
Функция

Remember me может не работать, если браузер не может установить куки на вашем domain (localhost, например).Если это так, тогда настройте свой домен как действительное имя домена (например, dev.site.com).Также убедитесь, что вы очистили кеш.

0 голосов
/ 15 января 2012

Это работает для меня с продолжительностью сеанса в конфигурации дополнительной безопасности remenber_me:

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