私は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にセッションタイムアウトを休まますので
バックエンドから強制的にリダイレクトすることはできません。しかし、バックエンドからの次回のリクエストでユーザをログインページにリダイレクトすることができます。とにかく認可システムはすでに何をしているのでしょうか? – David
私はあなたが何らかの形でクッキーに設定された "トークン"を投稿していると仮定し、バックエンドの認証モジュールはそのトークンを期限切れにする何らかの方法を持っていなければなりません(セッションの複製にそのexpiricyを置くことができます)有効なトークンを持たないメインページは、 "0000"のようになります。 –
@Davidはい、それはシステムの機能ですが、12秒ごとにリクエストを実行することで、定期的にそれを実行しようとしています。基本的には、バックエンドへのリクエストをシミュレートしようとしています。 – ITWorker