Symfony2用户由于缓存而作为其他用户登录

Symfony2用户由于缓存而作为其他用户登录,symfony,varnish,Symfony,Varnish,最坏的情况发生了 尽管我采取了所有必要的预防措施,但varnish似乎缓存了一个用户登录的页面 现在,当你进入我的网站时,你被连接成这个XXX人,显然不是你。您可以编辑他的个人资料… 我只缓存了2个页面(主页和一个列表页面),其中我有标签: @Cache(smaxage="10800") 在我所有的模板中,我使用ESI(用于菜单/页脚/登录模式)来防止这种情况: {% render "HomeBundle:Home:login" with { 'appRequestUri' : app.req

最坏的情况发生了

尽管我采取了所有必要的预防措施,但varnish似乎缓存了一个用户登录的页面

现在,当你进入我的网站时,你被连接成这个XXX人,显然不是你。您可以编辑他的个人资料…

我只缓存了2个页面(主页和一个列表页面),其中我有标签:

@Cache(smaxage="10800")
在我所有的模板中,我使用ESI(用于菜单/页脚/登录模式)来防止这种情况:

{% render "HomeBundle:Home:login" with { 'appRequestUri' : app.request.uri }, { 'standalone': true } %}
{% render 'HomeBundle:Home:menu' with { 'locale' : app.request.locale }, { 'standalone': true } %}
登录操作没有
@Cache
注释

这是我用过的清漆

请问我做错了什么


PS:我确实有
esi:{enabled:true}
并在
routing.yml

中导入了esi路由,我认为这不是因为缓存。
如果只是缓存,您将无法编辑配置文件,因为您将获得用户的缓存页面,而不是他的会话…

查看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将在稍后被调用,并且所有记录的请求都不会被缓存。

我不知道这是怎么可能的:它只在激活varnish时发生。您作为另一个用户进行连接,而不进行任何登录过程(这不像获取错误的用户)。