1. 程式人生 > >記錄問題:登入session過期,ajax請求被web security攔截,頁面沒有資料且沒有重定向到login頁面

記錄問題:登入session過期,ajax請求被web security攔截,頁面沒有資料且沒有重定向到login頁面

1.問題

背景:專案是springboot框架,用了web security攔截請求,控制使用者許可權

專案有一個頁面,點選分類按鈕,傳送ajax請求後臺獲取資料並區域性重新整理資料。當session過期時,點選分類按鈕,請求會被攔截轉為“/login”,但由於是ajax,頁面實際並不會重新整理而轉向login頁面,於是頁面資料也全部變為undefinde,手動重新整理頁面才會到登入介面。

2.解決:ajax請求成功會返回請求資料物件,如果session過期,請求不會發送到事務處理器,也就不會有返回資料,根據這一點在JS中判斷並進行頁面重定向操作。

$.ajax({			
    url:'/xx?id='+id,
    type:'get',
    success:function(data,status,xhr){
   if(xhr.responseJSON!==undefined){
drawTable(data); }else{ window.location.href="/login";//沒有返回json資料則跳轉到登入介面 } } });

下面是列印的xhr引數,如果返回了資料就會有responseJSON引數,反之就是被攔截了(這個專案被websecurity攔截)

3.總結:這個問題應該可以在後端解決,剛學的springboot,小白一隻,這個方法只是暫時滿足需求,後面可能會有問題或者有更好的方法,再改~