3

最悪のシナリオが発生しました。

必要な予防策をすべて講じましたが、ユーザーがログインしているページがニスでキャッシュされたようです。

さて、あなたが私のウェブサイトに行くとき、あなたは明らかにあなたではないこのXXX人として接続されています。そして、あなたは彼のプロフィールを編集することができます...

タグが付いている2ページ(ホームページと1つのリストページ)のみをキャッシュしました:

@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 } %}

@CacheLoginアクションには注釈がありません。

ここに、Varnishが使用するdefault.vclがあります。

私は何を間違っているのですか?

PS:私はesi: { enabled: true }esiルートを持っていてインポートしましたrouting.yml

4

2 に答える 2

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が直後に呼び出され、ログに記録されたすべてのリクエストがキャッシュされなくなります。

于 2012-10-11T13:37:36.287 に答える
0

キャッシュのせいではないと思います。プロファイルがキャッシュだけの場合、プロファイルを編集することはできません。これは、ユーザーのキャッシュされたページを取得するが、ユーザーのセッションは取得しないためです...

于 2012-10-11T08:25:47.773 に答える