2012-03-29 2 views
1

Итак, я собрал пакет FOSFacebook, интегрированный в мое приложение вместе с пакетом FOSUser. Теперь он работает правильно на моем сервере dev минус несколько ошибок, но он работает.Symfony2 - FOSFacebook Bundle - Субдомен

UPDATE: Так почему facebook устанавливает куки в mysite.com.au вместо subdomain.mysite.com, что означает, что он не в состоянии поднять на печенье и переходит на страницу отказа по умолчанию, который /Логин в фейсбук.

Теперь по какой-то причине, когда я развернул его на своем реальном сервере, который имеет тот же адрес (я меняю свой файл хостов для имитации домена), когда я пытаюсь войти в систему, я получаю «Маршрут не найден для« GET/facebook/login " Если я попытаюсь получить доступ к этой странице на dev, я получаю одно и то же сообщение, но обычно он регистрирует меня, а затем перенаправляет меня на индекс. В прямом эфире он застрял на/facebook/login

Вот мой security.yml

security: 
    encoders: 
     "FOS\UserBundle\Model\UserInterface": sha512 

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

    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: 
     public: 
      pattern: ^/ 
      fos_facebook: 
       app_url: "(set to the apps.facebook link I have)" 
       server_url: "http://testbed.mysite.com/app_dev.php/" 
       check_path: /facebook/check 
       login_path: /facebook/login 
       default_target_path:/
       provider: my_fos_facebook_provider 
      form_login: 
       success_handler: authentication_handler 
       failure_handler: authentication_handler 
       provider: fos_userbundle 
      anonymous: true 
      logout: true 



    access_control: 
     - { path: ^/login$, role: IS_AUTHENTICATED_ANONYMOUSLY } 
     - { path: ^/admin/login$, role: IS_AUTHENTICATED_ANONYMOUSLY } 
     - { path: ^/register, role: IS_AUTHENTICATED_ANONYMOUSLY } 
     - { path: ^/resetting, role: IS_AUTHENTICATED_ANONYMOUSLY } 
     - { path: ^/testing/secure/, role: IS_AUTHENTICATED_FULLY } 
     - { path: ^/admin/secure/, role: ROLE_ADMIN } 
     - { path: ^/account, role: IS_AUTHENTICATED_FULLY } 
    role_hierarchy: 
     ROLE_ADMIN:  ROLE_USER 
     ROLE_SUPER_ADMIN: ROLE_ADMIN 

Если вам нужно взглянуть на любые другие файлы, позвольте мне K теперь

Очевидно, что нет маршрута для/facebook/login, но я считаю, что это должно быть так. Любые идеи людей?

+0

Вы должны определить check_path И login_path как маршруты в вашей конфигурации маршрутизации – AlterPHP

+0

У меня есть check_path, определенный как пустой маршрут, и это работает нормально. Если я установил login_path на пустой маршрут, symfony жалуется, что маршрут пуст. Если я приложу к нему действие контроллера и создаю шаблон, он просто отобразит шаблон и ничего не сделает после этого. Что странно, так это то, что на моем сайте разработчика он отправляется на страницу входа в систему, но symfony справляется с этим правильно. На моем живом сервере он просто застрял на этой странице. – CriticalImpact

ответ

0

Просто определить login_path в качестве пути по умолчанию, установленном в security.yml:

_security_login: 
    pattern: /login 
    requirements: 
     _scheme: https 

_security_check: 
    pattern: /login_check 
    requirements: 
     _scheme: https 

_security_logout: 
    pattern: /logout 
    requirements: 
     _scheme: https 

Вы можете определить свой собственный контроллер для login_path, если вам нужна специфическое лечение, но вы не должны!

0

Получается, что каким-то образом на моем живом сайте я забыл правильно настроить параметры.ini и как таковой, когда я пытался войти в систему, он потерпел неудачу, но на самом деле не полностью проиграл.