複数ウインドウでSESSION情報を引き継がないには
ゲスト
ゲスト (hoge)
ATOMRSS
  • コード求むID: 103
  • 登録日時:  2007/08/16 15:28
  • 最終更新日時: 2007/10/11 13:28
  • アクセス数: 2662
  • タグ:  php java struts
  • codeなにがしブックマークに追加する 0 users
  • このページを del.icio.us に追加
  • このページをはてなブックマークに追加

元PHP、現JavaのSEをやってます。

JavaでもPHPでもそうですが、今頭を悩ませているのが、タブブラウザや、「ctrl+N」などで開かれた複数ウインドウによる、SESSIONIDの共通使用です。(JSFだと解決できるみたいですが...)

SESSION IDが共通になってしまうので、各々の画面で別の操作をされてしまうと、SESSIONの中身が崩れておかしなことになってしまいます。

現在考えているのは、mmsec単位のタイムスタンプ(orサーバー側でその時々にランダムに発生させる乱数)をhtmlのhiddenの値とSESSION内に持っておいて、それが一致した場合のみ正常な操作、それが一致しない場合は複数ウインドウによる操作とみなして、そのウインドウでの操作を無効とする、という事を考えています。

なにか、こんな方法で解決したとか、私のアイディアには穴があるとか、忌憚無いご意見を伺えたらと思います。

コメント

  • ゲスト
  • 1:ゲスト
  • 2007/08/18 18:43

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

GJ

  • ゲスト
  • 2:ゲスト
  • 2007/08/29 14:43

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

GJ

  • ゲスト
  • 3:ゲスト (hoge)
  • 2007/08/29 17:54

コメントありがとうございました。

とりあえず、基本的な考え方は大丈夫みたいですね。
あとは、そのユニークなものを、乱数にするか、タイムスタンプにするか、カウンタにするか、っていう感じですね。

今回は、Strutsを使っていますので、Transaction Tokenを使用しました。(コマンドが用意されていて楽なので。)
結果、良い具合に機能してくれています。
ボタンの2度押しに関してはJavaScriptやz-indexで画面自体に蓋をする事により回避しました。

GJ

  • ゲスト
  • 4:ゲスト (mmike)
  • 2007/10/11 13:28

アプリの基本構造として、単一画面での操作のみの設計であれば、
URLの一部をランダム自動生成する方法もよいかと思います。
#基本の考え方はTokenと一緒です。

http://~/[乱数]/~

その上で乱数に該当する部分をアクセスの都度
Tokenチェックの様に使うことで対処したことがあります。
※ついでといっては何ですがページキャッシュ対策にもなります。

GJ

前へ 1 次へ

コメントする

[block]から[/block]までの範囲はブロック表示されます。
部分的に目立たせたい時や、引用などにお使いください。

[code]から[/code]までの範囲は等幅表示されます。
ソースコードや設定ファイルの記述などにお使いください。

ゲスト投稿者:ゲスト:

関連ソースコード・ノウハウを登録

PDFLib | A library for processing PDF on the fly プレゼン公開・共有サイト handsOut.jp オープンタイプ株式会社 チーム・マイナス6% - みんなで止めよう温暖化

ブックマークコメント