ssm框架+前端ajax登入,解決登入後跳轉回原連結問題
阿新 • • 發佈:2019-01-10
當前環境:
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的輸出的內容。這種情況應該怎麼處理?