2013-08-14 3 views
0

Я хочу использовать FOSFacebookBundle с FOSUserBundle управления:FOSFacebookBundle & FOSUserBundle для Дифференц пользователей в передней и задней

  • фронта с Facebook Connect
  • в BackOffice для пользователей администратора с классическим логином/паролем (нет связи facebook здесь!)

Я использую Propel как ORM и AdminGeneratorGeneratorBundle для управления backoffice. Я переопределяю файл schema.yml файла FOSUserBundle, чтобы добавить определенные «поля facebook».

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

Является ли это неправильной конфигурацией файла конфигурации или я не в том смысле, что мне нужно?

здесь мои конфигурационные файлы:

security.yml

security: 
providers: 
    fos_userbundle: 
     id: fos_user.user_provider.username 
    fos_facebook_provider: 
     id: my.facebook.user 

encoders: 
    FOS\UserBundle\Model\UserInterface: sha512 

firewalls: 
    # Firewall public/FB Connect 
    public: 
     # since anonymous is allowed users will not be forced to login 
     pattern:   ^/.* 
     fos_facebook: 
      provider:  fos_facebook_provider 
      app_url:  "http://apps.facebook.com/fb-localhost-testing/" 
      server_url:  "http://localhost/fb-localhost-testing/" 
     anonymous:   true 

    # Firewall zone admin 
    admin_area: 
     pattern:     ^/admin 
     form_login: 
      provider:    fos_userbundle 
      csrf_provider:  form.csrf_provider 
      login_path:   /admin/login 
      check_path:   /admin/login_check 
      default_target_path: /admin/ 
     logout:   
      path:     /admin/logout 
      target:    /admin/login 
     anonymous:    true 

access_control: 
    - { path: ^/admin/login$, role: IS_AUTHENTICATED_ANONYMOUSLY } 
    - { path: ^/admin/, role: ROLE_ADMIN } 
    - { path: ^/connected/.*, role: [ROLE_FACEBOOK] } 
    - { path: ^/.*, role: [IS_AUTHENTICATED_ANONYMOUSLY] } 

role_hierarchy: 
    ROLE_ADMIN:  ROLE_USER 
    ROLE_SUPER_ADMIN: ROLE_ADMIN 

config.yml

# FOSUser Configuration 
fos_user: 
    user_class:   FOS\UserBundle\Propel\User 
    db_driver:   propel 
    firewall_name:  main 

# FOSFacebook Configuration 
fos_facebook: 
    alias:    fb-localhost-testing 
    app_id:    mmyid 
    secret:    mysecret 
    cookie:    true 
    permissions:  [email, user_birthday, user_location] 

services: 
    my.facebook.user: 
     class:    MyProject\Security\User\Provider\FacebookProvider 
     arguments: 
      facebook:  "@fos_facebook.api" 
      userManager: "@fos_user.user_manager" 
      validator:  "@validator" 

ответ

0

Решение: необходимо определить конкретный шаблон до глобального из них.

Чтобы решить мою проблему, я просто переключите 2 брандмауэров блокирует общественное & admin_area:

  1. Во-первых, admin_area брандмауэр с его специфической «^/админ» шаблон
  2. Во-вторых, публичный с глобальным рисунком «^ /. *».
Смежные вопросы