- 複数ウインドウでSESSION情報を引き継がないには

ゲスト (hoge)

元PHP、現JavaのSEをやってます。
JavaでもPHPでもそうですが、今頭を悩ませているのが、タブブラウザや、「ctrl+N」などで開かれた複数ウインドウによる、SESSIONIDの共通使用です。(JSFだと解決できるみたいですが...)
SESSION
現在考えているのは、mmsec単位のタイムスタンプ(orサーバー側でその時々にランダムに発生させる乱数)をhtmlのhiddenの値とSESSION内に持っておいて、それが一致した場合のみ正常な操作、それが一致しない場合は複数ウインドウによる操作とみなして、そのウインドウでの操作を無効とする、という事を考えています。
なにか、こんな方法で解決したとか、私のアイディアには穴があるとか、忌憚無いご意見を伺えたらと思います。
コメント

- 2:ゲスト
- 2007/08/29 14:43
似たようなものですがタイムスタンプではなくリクエストの
たびにセッション変数ないのカウンタ変数をカウントアップして
その数値をhiddenでページに埋め込みリクエストされた時にhidden
の設定値とセッション変数ないのカウンタをチェックして複数
ウインドウで操作されているか判定してます。

- 3:ゲスト (hoge)
- 2007/08/29 17:54
コメントありがとうございました。
とりあえず、基本的な考え方は大丈夫みたいですね。
あとは、そのユニークなものを、乱数にするか、タイムスタンプにするか、カウンタにするか、っていう感じですね。
今回は、Strutsを使っていますので、Transaction
結果、良い具合に機能してくれています。
ボタンの2度押しに関してはJavaScriptやz-indexで画面自体に蓋をする事により回避しました。

- 4:ゲスト (mmike)
- 2007/10/11 13:28
アプリの基本構造として、単一画面での操作のみの設計であれば、
URLの一部をランダム自動生成する方法もよいかと思います。
#基本の考え方はTokenと一緒です。
http://~/[乱数]/~
その上で乱数に該当する部分をアクセスの都度
Tokenチェックの様に使うことで対処したことがあります。
※ついでといっては何ですがページキャッシュ対策にもなります。
前へ 1 次へ![]()
コメントする
[block]から[/block]までの範囲はブロック表示されます。
部分的に目立たせたい時や、引用などにお使いください。
[code]から[/code]までの範囲は等幅表示されます。
ソースコードや設定ファイルの記述などにお使いください。







strutsなのであれば、Transaction Tokenとかはどうですか?