16

セッションがタイムアウト(たとえば10分)に達したときにポップアップ/レイヤー/アラートを発生させる必要があるasp.netサイトがあります。ポップアップには、非アクティブのためにアカウントセッションが期限切れになり、セッションを続行するためのボタンまたはログアウトするためのボタンがあることが示されます。

これをオンラインで行うさまざまな方法がありますが、これを処理するための最良/適切な方法は何ですか?ポップアップが長すぎる場合、追加のタイムアウトを設定する必要がありますか?

4

7 に答える 7

27
<script type="text/javascript">
    var sessionTimeoutWarning = "<%= System.Configuration.ConfigurationManager.AppSettings["SessionWarning"].ToString()%>";
        var sessionTimeout = "<%= Session.Timeout %>";

    var sTimeout = parseInt(sessionTimeoutWarning) * 60 * 1000;
    setTimeout('SessionWarning()', sTimeout);

    function SessionWarning() {
        var message = "Your session will expire in another " +
            (parseInt(sessionTimeout) - parseInt(sessionTimeoutWarning)) +
            " mins! Please Save the data before the session expires";
        alert(message);
    }
</script>
于 2012-05-09T19:05:50.163 に答える
6

これは以前に対処されています。たとえば、 ASP.NET - web.config の sessionState timeOut に基づく Javascript timeOut 警告

ただし、私の知る限り、これを行うための完全に信頼できる方法はありません。

  • ユーザーが同じセッションを使用して複数のウィンドウを開いている場合、1 つのウィンドウが他のウィンドウよりも新しい可能性があり、最も古いウィンドウのクライアント セッション タイムアウトは古くなったり正しくないことがあります。
  • サーバーに往復して現在のセッションの有効期限を確認すると、期限が延長され、ポップアップ/アラートの目的が無効になります。
于 2012-05-09T19:07:52.253 に答える
0

ここでは、クライアント側のテクノロジー (javascript) を使用する必要があります。たとえば、javascript タイムアウト機能を使用して警告を表示します。ユーザーが [OK] をクリックした場合、セッションを維持するために何かを行う必要があります。jquery.ajax メソッドを使用することをお勧めします。サーバーへの呼び出しは、セッションを維持するためだけのダミー呼び出しになる可能性があります。

于 2012-05-09T19:08:26.420 に答える
0

jquery と setinterval 関数を使用して、バックグラウンドで Ajax ポストを実行してタイムアウトを更新するか (スライド有効期限を使用している場合)、またはセッションの開始時刻を記録して有効期限から差し引いて残り時間の値を取得できます。

于 2012-05-09T19:10:08.377 に答える