2012-08-28 7 views
2

문제 :FOSFacebookBundle 휴식은 "기억 나"FOSUserBundle의

우리는 Symfony2의 FOSUserBundle을 사용하고 있고, 모두가 "나를 기억"을 포함하여, 잘 작동합니다.

우리는 최근 FOSFacebookBundle을 소개했습니다. 그 이후로 "정상적인"로그인에 대한 "기억하기"가 깨졌습니다. 예를 들어

:

우리는 사용자가로 로그인 - 양식에 기록하고 모든 작업을 계속 어떤 링크를 클릭 한 후, 활동없이 exemple를 위해 5 시간을 유지하는 경우에만 FosUSer를 사용 사용자 로그인 및 확인.

우리는 FosFacebook을 활성화 할 때 동일한 사용자가 페이스 북이 아닌 로그인 양식을 통해 로그인하고 활동하지 않고 시간을 유지합니다. 링크를 클릭하면 로그인 양식으로 리디렉션되고 비밀번호를 다시 입력하면 다시 대상 URL로 리디렉션됩니다.

FosFacebook을 구성에서 비활성화하면 FosUser의 "remember me"가 올바르게 작동합니다.

질문 :

FosFacebook가 FosUser "자연은"FB를 사용하지 않는 사용자를 위해 나를 기억 나누기가 정상인가요?

제대로 작동해야하는 경우 ... 설정 파일에서 실수를 저지른 사람이면 누구나 볼 수 있습니까?

설정 파일 :

config.yml facebooklogin을 추가 한 후

# 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] 
+0

Xavi Montero, @ kristof-van-cauwenbergh 여러분, 질문과 답변에 감사드립니다. 같은 문제가 있었지만 페이스 북 번들로 인해 발생할 수 있다고 생각조차하지 않았습니다. – yefrem

답변

6

는, 당신은 나를 logincredentials을 확인하기 위해 Facebookprovider을 사용하기 시작 기억한다. 다음과 같이 remember me config에 user_provider를 추가 할 수 있습니다.

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

추가하면 문제가 해결됩니다.