C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[4]: セッションタイムアウト前のアラート方法


(過去ログ 138 を表示中)

[トピック内 6 記事 (1 - 6 表示)]  << 0 >>

■80897 / inTopicNo.1)  セッションタイムアウト前のアラート方法
  
□投稿者/ しーしゃーぷ (1回)-(2016/08/17(Wed) 18:55:46)

分類:[ASP.NET (C#)] 

2016/08/17(Wed) 18:56:39 編集(投稿者)
2016/08/17(Wed) 18:56:34 編集(投稿者)

お世話になっております。

ASP.NET(C#) Framework4.5でWEBフォームサイトを作成しております。

以下、質問です。

入力→登録ボタン押下→DB登録というような一般的な登録画面を作成していますが、
セッションタイムアウト(60分に設定)の10分前にJavascriptのアラートを出すことは可能でしょうか?

自分で考えたのは、
Javascriptで登録画面を開いてからの経過時間を10分おきにチェックして、50分経過したらアラートを出すような処理ですが、
この場合、ある項目に入力補助として、虫眼鏡からマスタポップアップを出して項目を選択するような仕組みがある場合、
そのポップアップを開いたら、経過時間をリセットする必要があると思われます。

セッションが切れていたら、ログアウト画面に飛ばす等の方法は割と情報があるのですが、
セッションタイムアウト前のアラートのような要件は少ないのか、情報が見当たりません。

皆さん、入力中のセッション切れにはどのように対処されているのでしょうか?
教えて頂けると助かります。

※証券会社等のサイトでは実装されているような話を聞きますが、Javaとか別の仕組みでしょうか。

宜しくお願い致します。








引用返信 編集キー/
■80899 / inTopicNo.2)  Re[1]: セッションタイムアウト前のアラート方法
□投稿者/ 魔界の仮面弁士 (826回)-(2016/08/17(Wed) 19:10:38)
No80897 (しーしゃーぷ さん) に返信
> セッションタイムアウト(60分に設定)の10分前にJavascriptのアラートを出すことは可能でしょうか?

「セッションタイムアウト」ということは、
「クライアントからのリクエストが 60分間以上無い状態」なので、
サーバー側から通知する事はできません。

必然的にクライアント側でのアラートとなりますね。

たとえば window.setTimeout メソッドを使えば、
一定時間後にアラートを出すことはできます。


> 虫眼鏡からマスタポップアップを出して項目を選択するような仕組みがある場合、

マスタポップアップを出す前に、window.clearTimeout でアラートを解除して、
改めて、window.setTimeout で 50 分後の時間をセットしなおすとか。


あるいはサーバー側からの返却時に、常に「最終アクセス時刻」を
揮発性として Set-Cookie するようにし、クライアント側では
window.setInterval を使って、その Cookie が製造後 50分を経過していないか
賞味期限切れの警告判定を組み込んでみるとか。
引用返信 編集キー/
■80902 / inTopicNo.3)  Re[1]: セッションタイムアウト前のアラート方法
□投稿者/ WebSurfer (1006回)-(2016/08/18(Thu) 02:22:27)
No80897 (しーしゃーぷ さん) に返信

> セッションタイムアウト(60分に設定)の10分前にJavascriptのアラートを出すことは可能でしょうか?

質問者さんの言う「セッションタイムアウト」とは何のことですか?

ASP.NET の場合セッションタイムアウトというと、sessionState 構成要素の timeout 属性に設定した時間
が過ぎたことを言うと思いますが、質問を見るとどうもそれとは違うように見えます。フォーム認証のタイ
ムアウトのことを言っていますか?

ASP.NET の場合は、セッションの「タイムアウト」状態とフォーム認証の「タイムアウト」状態は違います。
詳しくは以下の記事を見てください。

セッションタイムアウトとログアウト
http://surferonwww.info/BlogEngine/post/2013/06/29/session-timeout-and-logout.aspx

フォーム認証の「タイムアウト」を判定するには以下のような方法があります。

Forms 認証のタイムアウト判定
http://surferonwww.info/BlogEngine/post/2010/07/30/Judging-expiration-of-Forms-authentication-ticket.aspx

こういう話ではないと言うことでしたら、質問者さんの言う「セッションタイムアウト」とは何か具体的に
書いてください。

引用返信 編集キー/
■80916 / inTopicNo.4)  Re[2]: セッションタイムアウト前のアラート方法
□投稿者/ う゛いびー (1回)-(2016/08/19(Fri) 15:03:32)
セッション切れになることを警告したいんだから、
どう考えてもセッションタイムアウトのことでしょ。
引用返信 編集キー/
■80922 / inTopicNo.5)  Re[3]: セッションタイムアウト前のアラート方法
□投稿者/ WebSurfer (1007回)-(2016/08/20(Sat) 00:07:22)
No80916 (う゛いびー さん) に返信
> セッション切れになることを警告したいんだから、
> どう考えてもセッションタイムアウトのことでしょ。

何を言っているのか意味が分かりませんが、あなたが質問者さんの言っていることが
分かっているのなら、あなたの理解を明記した上で、あなたの回答を書いてください。
引用返信 編集キー/
■80943 / inTopicNo.6)  Re[4]: セッションタイムアウト前のアラート方法
□投稿者/ しーしゃーぷ (2回)-(2016/08/22(Mon) 10:08:12)
皆さま

回答ありがとうございます。

質問は、まさしく
 <sessionState timeout="60" />
のことです。


魔界の仮面弁士さんの回答でCookieとありましたので、考えてみました。
Cookieに最後のリクエスト時間を保存するようにしてみました。

やり方は以下です。
・Global.asaxの「Application_EndRequest」イベントでCookieに現在時刻を保存
・Javascriptの「setInterval」で10分毎にCookieの保存時刻と現在時刻を比較して、50分経過していたらアラート
これで、現状、希望の動作ができているように思えます。


あとは「Application_EndRequest」が発生すれば、セッションは必ずリセットされる(経過時間が0分に戻る)のか、
もしくは、セッションがリセットされるのに「Application_EndRequest」が発生しない操作があるか、
等、検証していこうと思っています。

ありがとうございました。

解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -