目前接到一個需求如下:
SpringMVC的專案部署后,接入了客戶的統一認證平臺(基于token的方式),需要實作一個功能,在瀏覽器第一次訪問系統主頁時,需要執行一個ajax后臺操作,如果多次打開頁簽則不執行,重繪也不執行,但是如果關閉所有頁簽后再次打開第一個時,需要執行,也就是說每次打開該網站主頁并且只有一個頁簽打開時,需要執行一個后臺方法。
目前我準備的做法是:使用localstorage記錄打開主頁的次數,每次打開一個就增加一個,重繪不做處理,如果關閉一個就再減去一個,這樣只能再第一次打開時呼叫后臺方法,
但是目前遇到一個問題,就是無法判斷瀏覽器時重繪還是關閉,網上找了一些,也沒有找到準確的做法,目前主要能兼容谷歌、火狐、360等瀏覽器就行
求教各位!
uj5u.com熱心網友回復:
你的思路錯了。即使有這種代碼,也不能保證瀏覽器一定會正確執行(假死)。
可以使用cookie,不設定max-age的情況下,頁面全部關閉時會洗掉cookie。
所以只要判斷有沒有cookie內指定的記錄就可以了。
uj5u.com熱心網友回復:
這個需求有點問題token本身有時效嗎?還是token是無限期?
有時效的話,如果瀏覽器一直不關,始終開著第一個頁簽,那么時效過了怎么重新重繪token?
如果無期限,token被盜問題就更大了。
不過一般這種需求就像1L說的,用cookie,通常加上一個logout機能來洗掉cookie。
uj5u.com熱心網友回復:
用cooike不能解決這個問題的,如果一格瀏覽器中打開了其他頁面,這個時候關閉我們系統的頁面了,cookie還在,但是如果我再次登錄到系統還是需要執行這個后臺方法的,可是這個時候cookie還在
uj5u.com熱心網友回復:
這個token肯定是有失效的,如果失效了,訪問我們的系統會攔截到登錄頁面重新登錄,
uj5u.com熱心網友回復:
你細品。瀏覽器不關閉,就說明你這個不是第一個打開的標簽,也就不需要執行這個操作。
如果你指的操作是統一登錄的token,那也已經登錄了,不需要強制用戶再登錄,時效設定好就行了。
如果無論如何都要在用戶新訪問時操作,那你完全可以從訪問來源入手,如果訪問來源為空,說明用戶輸入網址打開的,執行這個操作。
不過,我還是覺得你思路錯了。因為我開發這個功能時,就是這樣的,瀏覽器沒有關閉,說明并沒有退出,也可以手動退出。
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/244394.html
標籤:Web 開發
