FOSFacebookBundle не помнит меня о FOSUserBundle

Проблема:

Мы использовали FOSUserBundle для Symfony2, и все работает нормально, включая «запомнить меня».

Недавно мы представили FOSFacebookBundle. С тех пор функция «запомнить меня» для «обычного» входа не работает.

Например:

Когда мы используем ТОЛЬКО FosUSer, если пользователь входит в систему через логин-форму и остается, например, 5 часов без активности, после перехода по любой ссылке все продолжает работать, с пользователем, авторизованным и идентифицированным.

Когда мы активируем FosFacebook, тот же пользователь также входит в систему через форму входа (не из facebook) и остается какое-то время без активности. После нажатия любой ссылки он перенаправляется на форму входа в систему, а после повторного ввода пароля снова перенаправляется на целевой URL.

Если мы деактивируем FosFacebook из конфига, то "запомнить меня" для FosUser снова работает корректно.

Вопрос:

Нормально ли, что FosFacebook нарушает «естественное» запоминание FosUser для пользователей, не использующих FB?

Если все должно работать правильно... может ли кто-нибудь увидеть, допустили ли мы ошибки в наших конфигурационных файлах?

Файлы конфигурации:

config.yml

# FOS User
fos_user:
    db_driver: %database_method% # other valid values are 'mongodb', 'couchdb'
    firewall_name: main
    user_class: Common\ODMBundle\Document\User
    from_email:
        address:        %fos_email_address%
        sender_name:    %fos_sender_name%
    profile:
        form:
            type:               fos_user_profile
            handler:            fos_user.profile.form.handler.default
            name:               fos_user_profile_form
            validation_groups:  [Profile]
    change_password:
        form:
            type:               fos_user_change_password
            handler:            fos_user.change_password.form.handler.default
            name:               fos_user_change_password_form
            validation_groups:  [ChangePassword]
    registration:
        confirmation:
            enabled:    true
            template:   FOSUserBundle:Registration:email.txt.twig
        form:
            type:               fos_user_registration
            handler:            fos_user.registration.form.handler.default
            name:               fos_user_registration_form
            validation_groups:  [Registration]
    resetting:
        token_ttl: 600
        email:
            template:   FOSUserBundle:Resetting:email.txt.twig
        form:
            type:               fos_user_resetting
            handler:            fos_user.resetting.form.handler.default
            name:               fos_user_resetting_form
            validation_groups:  [ResetPassword]

# FOS facebook
fos_facebook:
    file:   %kernel.root_dir%/../vendor/facebook/src/base_facebook.php
    alias:  facebook
    app_id: xxxxxxxxxxxxxxx
    secret: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
    cookie: true
    permissions: [email, user_birthday]

безопасность.yml

security:
    providers:
        fos_userbundle:
            id: fos_user.user_manager
        my_fos_facebook_provider:
            id: my.facebook.user

    factories:
          - "%kernel.root_dir%/../vendor/bundles/FOS/FacebookBundle/Resources/config/security_factories.xml"

    firewalls:
        main:
            pattern: ^/
            fos_facebook:
                check_path: /login_checkFB
                default_target_path: /user/
                provider: my_fos_facebook_provider
            form_login:
                provider: fos_userbundle
                default_target_path: /user/
            logout:       true
            anonymous:    true
            switch_user:  true
            remember_me:
                key:      aSecretKey
                lifetime: 604800
                path:     /
                domain:   ~

    access_control:
        #- { path: ^/.*$, role: IS_AUTHENTICATED_ANONYMOUSLY }
        - { path: ^/login$, role: IS_AUTHENTICATED_ANONYMOUSLY }
        - { path: ^/register, role: IS_AUTHENTICATED_ANONYMOUSLY }
        - { path: ^/resetting, role: IS_AUTHENTICATED_ANONYMOUSLY }
        - { path: ^/private/, role: ROLE_USER }
        - { path: ^/user/, role: ROLE_USER }
        - { path: ^/admin/, role: ROLE_ADMIN }

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

person Xavi Montero    schedule 28.08.2012    source источник
comment
Хави Монтеро, @kristof-van-cauwenbergh, ребята, спасибо за вопрос и за ответ, у меня была такая же проблема, но я даже не думал, что это может быть вызвано пакетом Facebook.   -  person yefrem    schedule 16.09.2013


Ответы (1)


После добавления facebooklogin ваш помните меня начинает использовать Facebookprovider для проверки учетных данных. Вы можете добавить user_provider в конфигурацию «запомнить меня» следующим образом:

remember_me:
    key:      aSecretKey
    lifetime: 604800
    path:     /
    domain:   ~
    user_provider: fos_userbundle

Добавление этого решит вашу проблему.

person Kristof Van Cauwenbergh    schedule 03.01.2013