gpt4 book ai didi

Symfony2 用户由于缓存而以其他用户身份登录

转载 作者:行者123 更新时间:2023-12-02 12:13:09 25 4
gpt4 key购买 nike

最坏的情况发生了。

尽管我采取了所有必要的预防措施,但 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 注释。

这是我的default.vcl由 Varnish 使用。

请问我做错了什么?

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,并且所有记录的请求都不会被缓存。

关于Symfony2 用户由于缓存而以其他用户身份登录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12825246/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com