gpt4 book ai didi

facebook - FOFacebookBundle 打破了 FOSUserBundle 的 "remember me"

转载 作者:行者123 更新时间:2023-12-02 08:46:27 25 4
gpt4 key购买 nike

问题:

我们一直在为 Symfony2 使用 FOSUserBundle,一切正常,包括“记住我”。

我们最近推出了 FOSFFacebookBundle。从那时起,“正常”登录的“记住我”就被打破了。

例如:

当我们仅使用 FosUSer 时,如果用户通过登录表单登录并停留,例如 5 小时没有事件,在单击任何链接后所有继续工作,用户登录并识别。

当我们激活 FosFacebook 时,同一用户也通过登录表单(而不是来自 facebook)登录并保持一段时间没有事件。单击任何链接后,他将被重定向到登录表单,并在再次输入密码后,再次被重定向到目标 URL。

如果我们从配置中停用 FosFacebook,FosUser 的“记住我”功能将再次正常工作。

问题:

对于不使用 FB 的用户,FosFacebook 打破 FosUser“自然”记住我是否正常?

如果应该正常工作...谁能看到我们的配置文件是否有错误?

配置文件:

配置.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]

最佳答案

添加 facebook 登录后,您的 remember me 开始使用 Facebookprovider 来检查登录凭据。您可以像这样将 user_provider 添加到记住我的配置中:

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

添加这个将解决您的问题。

关于facebook - FOFacebookBundle 打破了 FOSUserBundle 的 "remember me",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12162394/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com