2013-10-25 41 views
1

我正在開發一個網站,並注意到'記住我'登錄功能不起作用。Symfony2 + FosUserBundle與「記住我」給500內部服務器錯誤

所以我增加了一個記得我部向security.yml

firewalls: 
    secured_area: 
     pattern: ^/ 
     form_login: 
      check_path: /login_check 
      login_path: /login 
      provider: fos_userbundle 
     remember_me: 
      key:  "%secret%" 
      lifetime: 31536000 
      path: /
      domain: ~ 
     logout: 
      path: /logout 
      target:/
     anonymous: ~ 

僅供參考以下是訪問控制部分:

access_control: 
    - { path: ^/login$, role: IS_AUTHENTICATED_ANONYMOUSLY } 
    - { path: ^/register, role: IS_AUTHENTICATED_ANONYMOUSLY } 
    - { path: ^/resetting, role: IS_AUTHENTICATED_ANONYMOUSLY } 
    - { path: ^/admin/, role: ROLE_ADMIN } 
    - { path: ^/account, roles: ROLE_USER } 

記住我的功能現在看來,如果因爲工作,我登錄然後關閉瀏覽器並重新加載瀏覽器,我仍然登錄到網站。但是,如果我試圖去要求用戶先登錄任何網頁(如/帳號/設置)我得到以下錯誤:

The controller must return a response (false given). 
500 Internal Server Error - LogicException 

我已清空緩存並不能解決問題。

有關如何解決此問題的任何想法?

在你的代碼
+0

是的,爲什麼選擇投票?只是upvote使其成爲平均。 :) – ihsan

+0

我問了一個明顯的問題。你確定控制器對應路徑'/ account/settings'返回結果嗎?因爲錯誤很明顯.. – Lughino

+0

是的,如果我從Security.yml的防火牆設置中刪除'remember_me'部分,所有頁面都可以正常工作。 – someuser

回答

0

某處(/控制器帳戶/設置動作)你碰到這樣的

return false; 

$aVariable = false; 
[... code ...] 
return $aVariable; 

調試你的動作(/帳號/設置),並確保你返回: - 數組,如果您使用註釋 或 - 如果您使用其他方法定義路線,則爲「響應」實例

0

事實證明,答案非常簡單。

在我的任何身份驗證方法,我只好控制器方法:

$this->container->get('security.context')->isGranted('IS_AUTHENTICATED_FULLY') 

這需要改爲:

$this->container->get('security.context')->isGranted('ROLE_USER') 

就是這樣。感謝忘記幫助我解決這個問題。