前後端を完全に分離し、要求をブロックし、ログインページにジャンプ

1455 ワード

問題説明:前後の完全な分離の下でアーキテクチャの下で、大部分のデータ要求はAjaxによって非同期に取得され、sessionが期限切れになった場合、Ajax要求をブロックし、ログインページにジャンプします(リダイレクト、Ajax要求に転送すると、使用できません)
ソリューション: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");*/
    }
});