1. 程式人生 > >ssm框架+前端ajax登入,解決登入後跳轉回原連結問題

ssm框架+前端ajax登入,解決登入後跳轉回原連結問題

當前環境:

      spring做全連結攔截,在攔截器中進行登入驗證,登入方法在前端觸發使用的是ajax,登入方式呼叫成功後,將在session中儲存登入的UUID,登入成功後的處理直接使用頁面跳轉到主頁(window.location.href)。

出現的變更:

      如果頁面長時間沒有訪問,session失效後,之前開啟的頁面上的任何業務操作都將會跳轉到登入頁面,登入後會跳轉到主頁。

      在重新登入後客戶希望回到原來的頁面。

處理方案:

     1、在攔截器中,當登入的uuid為空的時候,記錄下訪問的全路徑儲存到session中:

String getFullURL(HttpServletRequest request) {
         StringBuffer url = request.getRequestURL();
         if (request.getQueryString() != null) {
          url.append("?");
          url.append(request.getQueryString());
         }
         return url.toString();
        }


      2、當正常跳轉時,清除儲存到session中的路徑,由於程式邏輯中,在登入成功後會直接在頁面上跳轉,故而在登入成功後的uuid不為空時,儲存的全路徑已經被使用了。

            或者在退出的動作中刪除session中的路徑,如此保證了,正常登入時,能跳轉到主頁上。

      3、在登入成功後,如果session中儲存的路徑為空,那麼直接將首頁連結返回到前端,否則獲取session中儲存的路徑,直接作為ajax的data返回到頁面,頁面獲取此路徑後,直接跳轉到此路徑;

引申問題:

如果在登入失效後輸入的URL是錯誤的,那麼登入後將會繼續開啟錯誤的URL,特別是當URL為ajax方法呼叫的連線時,頁面上將返回action的輸出的內容。這種情況應該怎麼處理?