2012-09-16 29 views
-1

我正在使用FOSUserBundle和FOSUserFacebookBundle來驗證我的用戶。問題是,當我訪問我的/登錄頁面。我有兩個帶有用戶名和密碼的文本字段。當我輸入我的用戶名和密碼,我收到以下錯誤:使用FOSUserBundle和FOSFacebookUser登錄用戶的問題

The Facebook user could not be retrieved from the session. 

這是這樣一個奇怪的錯誤,因爲我在用戶通過表單,而不是通過Facebook登錄,但就好像我記錄在用戶通過Facebook。所以,我有我的源代碼發揮周圍,這裏是我的security.yml /防火牆設置:

firewalls: 
      main: 
       pattern: ^/.* 
       form_login: 
        login_path: /login 
        check_path: /login_check  
        provider: fos_userbundle 
       fos_facebook: 
        app_url: "http://apps.facebook.com/myapp/" 
        server_url: "http://localhost/Symfony/web/app_dev.php" 
        login_path: /login 
        check_path: /login_check 
        default_target_path:/
        provider: my_fos_facebook_provider 
       anonymous: true 
       logout: 
        path: /logout 
        target:/
        handlers: ["fos_facebook.logout_handler"] 
       #http_basic: 
       # realm: "Secured Demo Area" 
      login: 
       pattern: ^/login$ 
       security: false 

我所擔心的是,在/ login_check,將檢查爲Facebook會話始終存在,這我不真的不想要。當我更改fos_facebook的login_path和check_path時,一切正常。任何想法可能會導致這種情況,以及如何解決這個問題?

回答

0

你的check_path對於form_login和fos_facebook應該是不同的。例如:

  form_login: 
       login_path: /login 
       check_path: /login_check  
       provider: fos_userbundle 
      fos_facebook: 
       app_url: "http://apps.facebook.com/myapp/" 
       server_url: "http://localhost/Symfony/web/app_dev.php" 
       login_path: /login 
       check_path: /login_check/facebook 
       default_target_path:/
       provider: my_fos_facebook_provider 
+0

爲什麼它在這裏是一樣的https://github.com/ollietb/OhFOSFacebookUserBundle/blob/master/Resources/config/security.yml – xonegirlz

+0

也..如果我讓它不同,應該在哪裏檢查路徑導致我也是.. – adit

0

我遇到了同樣的問題,卡洛斯是對的。

進行更改後需要做的:

form_login: 
    login_path: /login 
    check_path: /login_check  
    provider: fos_userbundle 
fos_facebook: 
    app_url: "http://apps.facebook.com/myapp/" 
    server_url: "http://localhost/Symfony/web/app_dev.php" 
    login_path: /login 
    check_path: /login_check/facebook 
    default_target_path:/
    provider: my_fos_facebook_provider 

,並在你的routing.yml

_security_check: 
    path: /login_check 
    defaults: { _controller: FOSUserBundle:Security:check } 

_security_logout: 
    pattern: /logout 

_security_check_fb: 
    path: /login_check/facebook 
    defaults: { _controller: FOSUserBundle:Security:check } 

最後但並非最不重要,你必須編輯JS對於Facebook:

function goLogIn(){ 
    window.location.href = "{{ path('_security_check_fb') }}"; 
} 

所以,現在你可以登錄表單或與Facebook沒有任何問題。

相關問題