ここで、セッション タイムアウトの警告と、ユーザーがログアウトしたことを通知するメッセージを表示する JavaScript コードをいくつか見つけました (以下に示すように)。ただし、このコードの問題は、ユーザーがコンピューターの前にいない場合です。いずれかのアラートで [OK] ボタンをクリックしても、それ以上のアクションは実行されません。そのため、現時点では、リダイレクトの 1 分前にタイムアウト警告が表示されるように設定されています。その警告が表示されると、ユーザーがボタンをクリックするまでタイマーが停止し、ユーザーが [OK] ボタンをクリックしてから 1 分後に 2 番目のメッセージが表示されます。ユーザーがその警告のボタンをクリックするまで、リダイレクトは行われません。
これを行うより良い方法はありますか?完全に分離されたタイマーを実行するのではなく、javascript を使用してセッション状態をポーリングし、実際の残り時間を調べることはできますか?
<script type="text/javascript">
var iddleTimeoutWarning = null;
var iddleTimeout = null;
function pageLoad() {
if (iddleTimeoutWarning != null)
clearTimeout(iddleTimeoutWarning);
if (iddleTimeout != null)
clearTimeout(iddleTimeout);
var millisecTimeOutWarning = <%= int.Parse(System.Configuration.ConfigurationManager.AppSettings["SessionTimeoutWarning"]) * 60 * 1000 %>;
var millisecTimeOut = <%= int.Parse(System.Configuration.ConfigurationManager.AppSettings["SessionTimeout"]) * 60 * 1000 %>;
iddleTimeoutWarning = setTimeout("DisplayIddleWarning()", millisecTimeOutWarning);
iddleTimeout = setTimeout("TimeoutPage()", millisecTimeOut);
}
function DisplayIddleWarning() {
alert("Your session will expire in one minute due to inactivity.");
}
function TimeoutPage() {
alert("Your session has expired due to inactivity.");
location.replace("index.aspx");
}
</script>
ありがとう。