2016-11-22 6 views
0

私はASP.NET MVCアプリケーションのメイン.cshtmlページに含まれている私のjsファイルに次き:目標は、セッションがまだ有効である場合(SessionControllerリターンだけをチェックすることですjavascriptの定期的な関数呼び出しのバックエンドのみの代替?

var ajax_call = function() { 

    $.ajax({ 
     type: "GET", 
     cache: false, 
     url: "/Session/Index/", 
     success: function (result) { 
      if (!(result.length > 0)) { 

       window.location.href = '/Home/Index/' 
      } 

     } 
    }); 


}; 

var interval = 1000 * 60 * .2; // where X is your every X minutes---.2 -> every 12 seconds 

setInterval(ajax_call, interval); 

セッションがアクティブな場合の結果)、そうでなければブラウザはHome/Indexにリダイレクトされます。HomeControllerには、ログインが有効なセッションでない場合はログインページにリダイレクトするグローバル認証属性があります。

私の質問は、有効なアプローチですか?それは動作します(私がユーザーでログインし、新しいウィンドウを開き、新しいウィンドウで同じユーザーでログインした場合、直前のウィンドウは12秒周期のどこに応じてすぐにログイン画面にリダイレクトされます)、しかし、私はバックエンドでそのようなことを完全に行うことができる方法はありますか?

ありがとうございます。サーバーへの要求は0にセッションタイムアウトを休まますので

+0

バックエンドから強制的にリダイレクトすることはできません。しかし、バックエンドからの次回のリクエストでユーザをログインページにリダイレクトすることができます。とにかく認可システムはすでに何をしているのでしょうか? – David

+0

私はあなたが何らかの形でクッキーに設定された "トークン"を投稿していると仮定し、バックエンドの認証モジュールはそのトークンを期限切れにする何らかの方法を持っていなければなりません(セッションの複製にそのexpiricyを置くことができます)有効なトークンを持たないメインページは、 "0000"のようになります。 –

+0

@Davidはい、それはシステムの機能ですが、12秒ごとにリクエストを実行することで、定期的にそれを実行しようとしています。基本的には、バックエンドへのリクエストをシミュレートしようとしています。 – ITWorker

答えて

1

目標は、セッションがまだ

これは良いアプローチではありません有効であるかどうかを確認することです。 これはセッションを永遠に生きていることを意味します。ユーザーがブラウザを閉じずにコンピュータを開いたままにしておくと、他のユーザーは引き続きアカウントにアクセスできます。

私のウェブサイトで使用しているアプローチは以下の通りですは銀行/クレジットカードのウェブサイトからインスピレーションを受けています。

デフォルトでは、セッションタイムアウトは20分です(希望の方法を調整できます)。だから、私はクライアント側でタイマーを実行させます。 19分になると、分カウントダウンタイマー付きのポップアップメッセージが表示されます。

enter image description here

使用は、ポップアップを閉じていない場合、私はページをログアウトするためにリダイレクトします。

Hereは概念とサンプルコードですが、達成するためにTelerikコントロールを使用する必要はありません。

+0

このシナリオは若干異なりますが、セッションタイムアウトになると役立ちます。私の質問は、別のウィンドウからログインしたときに、あるウィンドウでユーザーを追い出すことでした。 – ITWorker

+0

これが当てはまる場合、ajaxリクエストの実行時にブラウザのセッションが無効であるため、元の方法を使用できます。 – Win

関連する問題