2014-06-24 138 views
0

我正在開發一個Symfony2應用程序,我有一個問題。後退按鈕註銷symfony2 php錯誤

當我退出我的應用程序時,它會正確執行此操作,但如果按下瀏覽器的後退按鈕,我會返回到已記錄的頁面。

如果我寫URL去這個頁面,我不能。

在此先感謝

這是我Security.yml

security: 
encoders: 
    Simple\ProfileBundle\Entity\User: 
     algorithm:  sha1 
     encode_as_base64: false 
     iterations:  1 


role_hierarchy: 
    ROLE_ADMIN:  [ROLE_USER] 


providers: 
    main: 
     entity: 
      class: Simple\ProfileBundle\Entity\User 
      property: username 

firewalls: 
    secured_area: 

     pattern: ^/ 
     anonymous: ~ 
     form_login: 
      login_path: login 
      check_path: login_check 
      always_use_default_target_path: true 
      default_target_path: /logged/portada 
     logout: 
      path: /logout 
      target: /portada 
access_control: 
     - { path: ^/logged, roles: ROLE_ADMIN } 
+0

你檢查了你有沒有設置$ _Session/cokkie或任何變量,讓你留在? – Nicco

+0

是的,我取消了所有的cookies並銷燬了會話,但仍然返回。我認爲這可能是因爲瀏覽器緩存,但我不能停用它。 – ioses

+0

你的'security.yml'文件是什麼樣的?您是否真的在Symfony文檔中遵循了[與安全有關的指示](http://symfony.com/doc/current/book/security.html),或者您是否只編寫了自己的安全應用程序層? Symfony會告訴瀏覽器緩存頁面,如果它沒有確認某些路由或路徑是安全的。 – sjagr

回答

0

我只是測試您的方案成功地在自己的Symfony 2.3的應用程序,並發現它其實是來自一個安全漏洞瀏覽器緩存(不是框架問題,因爲它超出了框架的控制範圍)。

這裏是一個discussion around the issue。一般(但不完整)的解決方案是發送瀏覽器在使用後退按鈕行爲時可能(或可能不會)注意的「Expire」標題。 Here's the Symfony docs for HTTP Cache headers

我還沒有在2.5。*環境中測試過它,所以這可能是在Symfony的後續版本中解決的。

+0

謝謝你的幫助。我是Symfony的新手,我不知道它爲什麼會失敗。 – ioses