[Seasar-user:14416] Re: キャッシュを無効にする方法

Koichi Kobayashi [E-MAIL ADDRESS DELETED]
2008年 5月 23日 (金) 17:00:13 JST


小林 (koichik) です.

Date:    Fri, 23 May 2008 16:10:25 +0900
From:    "小川昌幸" <[E-MAIL ADDRESS DELETED]>
To:      [E-MAIL ADDRESS DELETED]
Subject: [Seasar-user:14413] Re: キャッシュを無効にする方法

> IEの標準でついてる「戻るボタン」
> 又は、キーボードの「backspace」などで、
> 「有効期限がきれてます」を画面に表示させたいだけです。

PRG パターンだと画面に表示されているのは
GET メソッドの結果なので,期限が切れていても
そのメッセージは表示されずに再度リクエストが
飛ぶだけのようですね.

> 最近、ユーザビリティーより、セキュリティ重視のお客様が増加して
> 戻るにて、画面が表示されないようにしたいなどの
> 要望が多く、今回困り果ててます

表示されないようにしたいだけなら,
再表示でエラー画面を表示するようにすれば
いいのでは?

te-uniqukey の値はシステム時刻を 16 進で
文字列化しているだけなので,最後に表示した
リクエストの te-uniquekey を HTTP セッションに
保存しておいて,それ以下の te-uniquekey が
リクエストされたら再表示なので例外をスローして
エラー画面に飛ばせばいいのではないかと.

@Component(instance=InstanceType.SESSION)
public class UniqueKeyDto {
  public long uniqueKey;
}

public class XxxPage {
  public UniqueKeyDto uniqueKeyDto;
  public Map<String, String> param;

  public void prerender() {
    String value = param.get("te-uniquekey");
    if (value != null && value.length() > 0) {
      long uniqueKey = Long.parseLong(value, 16);
      if (uniqueKey <= uniqueKeyDto) {
        throw new ExpireException();
      }
      uniqueKeyDto.uniqueKey = uniqueKey;
    }
    ...
  }
}

適当ですがこんな感じで.

キャッシュが効いていると戻るでリクエストが
されないので,レスポンスヘッダでのキャッシュ
無効化は必要です.


-- 
<component name="koichik">
    <property name="fullName">"Koichi Kobayashi"</property>
    <property name="email">"[E-MAIL ADDRESS DELETED]"</property>
    <property name="blog">"http://d.hatena.ne.jp/koichik"</property>
</component>



Seasar-user メーリングリストの案内