前後端を完全に分離し、要求をブロックし、ログインページにジャンプ
1455 ワード
問題説明:前後の完全な分離の下でアーキテクチャの下で、大部分のデータ要求はAjaxによって非同期に取得され、sessionが期限切れになった場合、Ajax要求をブロックし、ログインページにジャンプします(リダイレクト、Ajax要求に転送すると、使用できません)
ソリューション:1.バックグラウンドコード:
フィルタまたはブロッキングでは、要求に合致しないセッションをブロックします.
Spring MVCアーキテクチャのListener、フィルタ、ブロッキングリファレンス:https://blog.csdn.net/BigBug_500/article/details/94772729
2.ajaxリクエスト修正後の終了動作
jQueryファイルに次の関数を追加します.
ソリューション:1.バックグラウンドコード:
フィルタまたはブロッキングでは、要求に合致しないセッションをブロックします.
String type = request.getHeader("X-Requested-With");// XMLHttpRequest HttpServletRequest -> request
if ("XMLHttpRequest".equals(type)) {
// ajax
//
response.addHeader("FLAG", "-1");
response.setHeader("SESSIONSTATUS", "TIMEOUT");
response.setHeader("CONTEXTPATH", php_Address);//
response.setStatus(1000);
} else {
// ajax ,
response.sendRedirect(php_Address);
}
Spring MVCアーキテクチャのListener、フィルタ、ブロッキングリファレンス:https://blog.csdn.net/BigBug_500/article/details/94772729
2.ajaxリクエスト修正後の終了動作
jQueryファイルに次の関数を追加します.
$.ajaxSetup({
// ajax
complete: function (XMLHttpRequest, textStatus) {
var url = XMLHttpRequest.getResponseHeader("CONTEXTPATH");
var flag = XMLHttpRequest.getResponseHeader("FLAG");
if (flag != "" && flag == "-1") {/* console.log(url);*/
window.location.href = url;
}/* console.log(flag);console.log("1231");*/
}
});