サーバーの処理を行う従来の ASP ページへの JQuery および AJAX 呼び出しを使用してシステムを構築しています。
このシステムでは、ユーザーがログインする必要があります。セッションを使用してユーザー名を保存しています。
問題は、デフォルトの 20 分後にセッションがタイムアウトし、ユーザーがサインイン ページにリダイレクトされることです。何らかの理由で AJAX 呼び出しがセッションを維持していないと思います。
これが私がやっている方法です:
ユーザーがログインすると、次のように AJAX 呼び出しを投稿します。
$.ajax({
type: "POST",
url: "admin/ajax/signin.asp",
data: {
'username': username,
'userpassword': userpassword
},
cache: false,
success: function(data, textStatus, jqXHR) {
if (jqXHR.getResponseHeader('REQUIRES_AUTH') === '1'){
$('#failed').show();
}
else {
location.href = "admin/"
}
}
});
signin.asp はデータベースに対してユーザーの詳細をチェックします。OK の場合、このページはユーザー名をセッション変数に保存します。
Session("userid") = Request("username")
ユーザーがログインしました。
ユーザーがシステムを使用している間、すべてのページですべての AJAX リクエストの REQUIRES_AUTH ヘッダーがチェックされ、ログアウトのリダイレクトが次のように処理されます。
/* Check user logged in on every ajax request */
$('body').ajaxComplete(function(event,request,settings){
if (request.getResponseHeader('REQUIRES_AUTH') === '1'){
location.href="../signin.html"
};
});
/* End */
AJAX ポストを使用して呼び出されるすべての ASP ページは、セッションのチェックを行います。存在しない場合は、次のように REQUIRES_AUTH ヘッダーを設定します。
If (trim(Session("userid")) = "") Then
'No session so clear variable
Session.Contents.Remove("userid")
'Redirect to Login page
Response.AddHeader "REQUIRES_AUTH", "1"
Else
Session("userid") = Session("userid")
End If
Session("userid") = Session("userid") を使用し、サーバー上で何かを行う ASP ページを呼び出しているという事実は、セッションを維持するのに十分であると仮定しましたが、そうではないようです。すべてのアドバイス大変感謝しています。私は根本的に何か間違っていますか?