ASP.netアプリケーションで多くのAJAX要求を行っていますが、ユーザーがログアウトすると、応答テキストを使用している場所にログインフォームが表示されます。
この問題をどのように処理できますか?すべての応答を再概念化することはできません。ユーザーがログアウトした場合、応答が多すぎるため、特定の応答が返されます。
すべての応答に対してこれを処理する方法はありますか?すべての応答は、特定のフォルダー内のGenericHalndlers.ashxによって処理されます。
これは、comman関数を使用してサイト全体で達成でき、セッションを検証できます。これは、2ステップのプロセスを使用して達成できます。
ステップ1:
ajaxの完全な関数呼び出しでvalidateSessionを呼び出します。この場合、セッション/ログインページのコンテンツに基づいてログインページにリダイレクトされます。
complete: function(XHR, status){ //handle session out
validateSession(XHR.responseText);
},
ステップ2:
ログインページに配置されたテキストをチェックして、セッションとリダイレクトを処理します。私の例では、ログインページに:SESSION EXPIRED:文字列を配置しました。
function validateSession(strAjaxOutput, strStatus, objXhr)
{
if(("undefined" != typeof strStatus) && ("undefined" != typeof objXhr))
{
strAjaxOutput = objXhr.responseText;
}
var reg = /:SESSION EXPIRED:/;
if(reg.test(strAjaxOutput))
{
window.location = "http://www.myloginpage.com"; //redirect to login page
return false;
}
else
{
return true;
}
}