讓未登錄的用戶跳轉到登錄頁


開發使用的是SpringBoot和Shiro,然后遇到了這個問題,記錄一哈。

1.處理ajax異步請求:

  如果不想每個ajax都判斷返回數據,然后進行未登錄跳轉的話,可以修改JQuery的默認設置(complete回調):

            $.ajaxSetup({
                    contentType : "application/x-www-form-urlencoded;charset=utf-8",
                    complete : function(XMLHttpRequest, textStatus) {
                            var sessionstatus = XMLHttpRequest.getResponseHeader("sessionstatus"); 
                            if (sessionstatus == "timeout") {
                                    alert("登錄超時,請重新登錄!");
                                    top.location.href="/";
                            }
                            
                            if(XMLHttpRequest.responseText == "{\"access\":\"Not Authenticated\"}"){
                                alert("尚未登錄,請重新登錄!");
                                top.location.href="/";
                            }
                    }
            });

  上面處理了超時和主動退出的情況,后者是需要后端傳對應的數據的,如果不想每個請求都判斷是否登錄然后響應未登錄數據的話,可以在過濾器里統一處理。我用了Shiro所以是在Shiro的基礎上添加攔截器,這里遇到一個小問題就是重寫的攔截器因為沒給Spring管理所以不能自動注入Dao層的接口,要通過應用上下文對象獲取。

 

2.處理非ajax請求

  如果是主頁面的請求那么直接跳轉或轉發,子頁面的話可以發一段js來跳轉主頁面,比如

out.write("<sciprt>top.location.href='/';</script>");

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM