- PR -

セッションが切れたときのsubmit処理で

投稿者投稿内容
山本 裕介
ぬし
会議室デビュー日: 2003/05/22
投稿数: 2415
お住まい・勤務地: 恵比寿
投稿日時: 2003-10-27 18:43
>ログ等はすでに確認済みで、全く処理が走っていません。
これは、アクセスログも含むのでしょうか?アクセスログはあるけど、アプリケーションのログはない、というのであれば先ほど申し上げた通り、Filterなどでブロックしているのでしょうが・・、
>タイムアウトを1分にして10分ほど放置しXボタンを押したら、やはりパケットは一切
>吐かれていませんでした。
パケットがそもそも飛んでいないのであれば、サーバ側のセッションタイムアウトは関係なさそうですね。JavaScript としてウィンドウを閉じるときに onunload が呼ばれることを期待してよいのかどうか?というのが焦点になるのではないでしょうか。

手元にあるブラウザで試してみたところ、
MacOSX の Safari 以外のブラウザでは閉じるときに onunload が呼ばれました。時間が経過すると・・・というのは検証していませんが。
ちなみに以下のブラウザで試してみました。
Win:Opear7.11,IE6.0,Mozilla1.5,Firebird0.6.1
MacOSX:Mozilla1.6a,IE5.2,Safari1.1

↓こんな HTML で。
<html>
<body onload="alert('onload')" onunload="alert('onunload')">
</body>
</html>

[ メッセージ編集済み 編集者: インギ 編集日時 2003-10-27 18:56 ]
C'zka
ベテラン
会議室デビュー日: 2003/09/04
投稿数: 64
投稿日時: 2003-10-27 18:55
>インギさん

>JavaScript としてウィンドウを閉じるときに onunload が呼ばれることを期待してよいのか>どうか?というのが焦点になるのではないでしょうか。
これに関しましては、1PCでログイン画面、ログオフ画面、メインの作業画面というものがありまして、ログイン画面で再ログインされたとき、もしくは別でブラウザを立ち上げてログインを行った場合、ログオフ画面、作業画面は上かぶせにして、現在ログインされているユーザをログアウトしてから入れるようにしなくてはならないのです。まあ、とにかく、難儀な仕様なのです・・・・
よって、必ずonunload処理が必要になってきます。

後は、ブラウザの設定とかなのでしょうか・・・・
山本 裕介
ぬし
会議室デビュー日: 2003/05/22
投稿数: 2415
お住まい・勤務地: 恵比寿
投稿日時: 2003-10-27 19:01
>てログインを行った場合、ログオフ画面、作業画面は上かぶせにして、現在ログインされ
>ているユーザをログアウトしてから入れるようにしなくてはならないのです。まあ、とに
ログイン画面で !session.isNew() だったら session.invalidate() してしまうというのはいかがでしょうか?
C'zka
ベテラン
会議室デビュー日: 2003/09/04
投稿数: 64
投稿日時: 2003-10-27 19:25
>インギさん
この場合、セッションを初期化するのは何か関係があるのでしょうか・・・Submitが走らないのと・・・

jspを扱った開発が、今回初めてなのでセッションとかの概念がいまいちわかってないもので・・・・
山本 裕介
ぬし
会議室デビュー日: 2003/05/22
投稿数: 2415
お住まい・勤務地: 恵比寿
投稿日時: 2003-10-27 19:39
>この場合、セッションを初期化するのは何か関係があるのでしょうか・・・Submitが走ら
>ないのと・・・
「ログイン画面が表示された時に、既にログイン済みであれば、ログアウトを行う」ことができれば本来の要件が実現できるのではないかと考えました。検討違いだったらごめんなさい。

logout.do 内で行っているのは session.invalidate() だと思ったのですが。ログイン/ログアウト処理はどのように行っていますか?
C'zka
ベテラン
会議室デビュー日: 2003/09/04
投稿数: 64
投稿日時: 2003-10-27 19:47
ログイン情報はDBで管理している為、セッションを消去してもこの場合は意味がないんです^^;

試しに、Xボタンを押すとsubmitが走らない状態で別ユーザによる再ログインを行ってみると、なぜかちゃんとログアウト処理が行われていたりします・・・・・(FormBeanには書き込まれないが、loggingでは処理が吐かれている&DBのログインユーザ情報が消えている)

なんか、頭の中で迷宮入りしそうな雰囲気・・・・(苦笑
山本 裕介
ぬし
会議室デビュー日: 2003/05/22
投稿数: 2415
お住まい・勤務地: 恵比寿
投稿日時: 2003-10-27 20:01
>ログイン情報はDBで管理している為、セッションを消去してもこの場合は意味がないんです^^;

な、なるほど。認証制御方法に関わらず、
if(ログイン済み){
//ログアウト
}
をログイン画面を表示する手前で行えば良いのではないでしょうか。ブラウザの挙動に依存したトリッキーな JavaScript で実現するより安全/確実かと。

[ メッセージ編集済み 編集者: インギ 編集日時 2003-10-27 20:03 ]
C'zka
ベテラン
会議室デビュー日: 2003/09/04
投稿数: 64
投稿日時: 2003-10-27 20:25
>ログイン画面を表示する手前で行えば良いのではないでしょうか
さらに厄介なことに、ログイン画面はログインしたら後は消そうが他の画面に行こうが
放置で、再度ログイン画面を表示することがないのです・・・・

ので、かならずログオフ画面で処理しなくてはいけないわけで・・・・・

スキルアップ/キャリアアップ(JOB@IT)