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]
security.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]
1 ответ
После добавления facebooklogin ваш Запомнить меня начинает использовать Facebookprovider для проверки регистрационных данных. Вы можете добавить user_provider в конфигурацию запомнить меня следующим образом:
remember_me:
key: aSecretKey
lifetime: 604800
path: /
domain: ~
user_provider: fos_userbundle
Добавление этого решит вашу проблему.