2012-10-10 51 views
3

發生了最糟糕的情況。Symfony2由於緩存而導致其他用戶登錄的用戶

雖然我採取了一切必要的預防措施,似乎清漆緩存的其中一個用戶在登錄頁面。

現在,當你走在我的網站,您已連接,因爲這XXX人這顯然是不是你。您可以編輯自己的個人資料...

我緩存2頁只(主頁,以及一個上市頁),我有標籤:

@Cache(smaxage="10800") 

,並在我所有的模板,我使用ESI(菜單/頁腳/登錄modale),以防止這些種情況:

{% render "HomeBundle:Home:login" with { 'appRequestUri' : app.request.uri }, { 'standalone': true } %} 
{% render 'HomeBundle:Home:menu' with { 'locale' : app.request.locale }, { 'standalone': true } %} 

登錄操作不具有@Cache註解。

這裏我的default.vcl使用Varnish。

我在做什麼錯誤?

PS:我有esi: { enabled: true }routing.yml

回答

2

查看您的VCL後,看起來您會緩存每個請求用Cookie裏面。這不是你想要的,不是嗎?

我建議你爲越早關閉vcl_recv,你可以:

sub vcl_recv { 
    if (req.http.Cache-Control ~ "no-cache") { 
     return (pass); 
    } 
    set req.http.Surrogate-Capability = "abc=ESI/1.0"; 
} 

這樣做的方式,則默認vcl_recv只會被稱爲後,你的所有登錄請求將不會被緩存。

0

我不認爲這是因爲高速緩存的進口ESI路線。 如果只是緩存,您將無法編輯配置文件,因爲您將獲得用戶的緩存頁面,但不會獲得用戶的會話...

+0

我不明白這是怎麼可能的:它只發生在清漆激活時。你作爲另一個用戶連接而沒有進行任何登錄過程(它不像獲取錯誤用戶的教條)。 –

相關問題