- PR -

Netscapeでウインドウがクローズされた場合のログアウト処理

1
投稿者投稿内容
MIZU
会議室デビュー日: 2004/11/02
投稿数: 6
投稿日時: 2007-03-26 18:04
いつもお世話になっております

Webアプリケーションシステムの運用で
ウインドウがクローズされるとログアウトする処理を実装しようと考えています
現在の状況は、アプリケーション上に「ログアウト」ボタンを設置しており
ボタンを押せば正常にログアウトされセッションも切断されます。
しかし、画面の閉じるボタンを押されてしまうと
Webサーバーに設定しているタイムアウト時間までセッションが消えないで
溜まっていってしまう状態です。

そこで閉じるボタンが押された場合に判別できる方法を探しているのですが
Netscapeでの方法が分かりません。
ご存知の方がいましたらご教授願います

ちなみに
IEであれば、onUnload イベントで呼ばれるfunction内でウィンドウサイズを取
得すると閉じられた場合のサイズが小さくなるため判断可能(但し、他のブラウ
ザでは判断不可能)
Operaであれば、例外を発生するfunctionを作成し、onUnload イベントで呼ばれ
るfunction内でコールしておくと、ウィンドウを閉じたときのみ例外を発生する
ことで判断可能(IE、NNでは判断不可)

以上、よろしくお願い致します
koe
大ベテラン
会議室デビュー日: 2003/07/13
投稿数: 198
投稿日時: 2007-03-26 19:43
ウィンドウを閉じるタイミングでの処理の実行は、厳密には期待できません。

厳密な話をするなら、ブラウザやOSの異常終了や
ネットワークのトラブルなどが発生すれば、
ウィンドウクローズ時の処理なしで終了する状況は起こりえます。

代わりに、ログアウト時の処理無しでも上手くいく方法を考えるべきです。
ところでMIZUさんは、ログアウト時にどのような処理をなさりたいのでしょうか?
MIZU
会議室デビュー日: 2004/11/02
投稿数: 6
投稿日時: 2007-03-27 11:17
koe様
ご返信ありがとうございます。

確かに異常終了などのイレギュラーな場合は
クローズ処理なしで終了する事が考えられます。
しかし、それでも画面クローズ時にログアウトする処理を行なえば
現状よりも居残るセッションを減らす事ができると考えました。
(アクセス負荷対策のためセッション数でアクセス制限をかけている為)

ログアウト時の処理は単に明示的にセッションを
クローズさせたいと考えています。

以上、よろしくお願い致します
かつのり
ぬし
会議室デビュー日: 2004/03/18
投稿数: 2015
お住まい・勤務地: 札幌
投稿日時: 2007-03-27 14:06
通常の画面遷移では常に遷移前にフラグをセット、
onunloadでフラグを判定すれば、通常の画面遷移か、閉じるボタンか判断できませんか。

明示的にログアウトしなければ運用できないのであれば、
WEBアプリとしては既に破綻しています。
セッション数が増えることが最初から想定される場合、
セッションに格納するデータ量を減らすか、
メモリを増やす・クラスタリングを行う、などの対策をするのが筋なんですが。
MIZU
会議室デビュー日: 2004/11/02
投稿数: 6
投稿日時: 2007-03-27 14:40
かつのり様
ご返信ありがとうございます

通常のアプリ上で発生する画面遷移では判別可能なのですが
ブラウザボタン操作(戻る、進む、更新、閉じる、など)で
発生するイベントの拾い方が不明なのです。

確かに毎回ログアウトしないと運用できないのであれば
Webアプリとしてかなり問題があると思います。
(ちゃんとログアウトして閉じてほしいと言うのが本音ですが・・・)
現在、構築中のシステムもいきなりウインドウを閉じられても
データ量とユーザ数から考えて支障はないと考えていますが
顧客要件としてこのような要望が出てしまった為、調査している最中です。

以上、よろしくお願い致します
あしゅ
ぬし
会議室デビュー日: 2005/08/05
投稿数: 613
投稿日時: 2007-03-27 16:09
フレームを切れば対処できますよ。

↓以下関連スレッド
http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=9742&forum=12&7
http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=27863&forum=12
MIZU
会議室デビュー日: 2004/11/02
投稿数: 6
投稿日時: 2007-03-27 19:16
あしゅ様
ご返信ありがとうございます。

隠しフレームを使うとは思いつかなかったです。
いろいろと試してみたいと思います。

どうもありがとうございました。
かつのり
ぬし
会議室デビュー日: 2004/03/18
投稿数: 2015
お住まい・勤務地: 札幌
投稿日時: 2007-03-27 19:32
セッションタイムアウトをメチャメチャ短くして、
常に隠しフレームやAjaxなどから数秒おきにダミーデータを送信するっていうのもありますね。

ブラウザを開いている期間=サーバのセッションが生存している期間
というのは実際に難しいので、どうしてもトリッキーなやりかたになりますね。
1

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