后端設定了30分鐘,賬號登錄就過期。現在說要實作長期登錄網頁,登錄不會過期。我這邊前端怎么操作,我不懂這個原理
uj5u.com熱心網友回復:
我只設定了有操作就不會過期,也是稀里糊涂弄出來的,如果用戶沒有操作,過30分鐘就會過期了。我怎么讓他不過期啊uj5u.com熱心網友回復:
前端什么都不用干,讓后端每次訪問介面的時候,把redis里的過期時間更新下即可uj5u.com熱心網友回復:
一般來說 后端設定了失效時間的話 每次需要登錄狀態的介面請求都會更新這個失效時間, 這樣的話 前端只要判斷下 快過期的時候 發一個請求就可以了 這樣后端會把過期時間再更新為半個小時uj5u.com熱心網友回復:
具體思路 是攔截ajax 請求,設定一個延時器, 每次請求都清除一下 重新設定, 延時器的內容就是發送一個請求 更新過期時間uj5u.com熱心網友回復:
這個鍋甩給后端。因為你每次請求都會給后端傳token。過期了你就拉取不到資料。所以你還是需要重新登錄的。uj5u.com熱心網友回復:
重繪token,快過期的時候,向重繪借口再請求新的tokenuj5u.com熱心網友回復:
要看你是什么過期機制。如果是auth,那就是重繪token,它是有一套標準流程的,你百度“auth2 重繪token”一堆方案。如果是更傳統的cookie機制,你百度“cookie重繪保持不過期”uj5u.com熱心網友回復:
過期好像是等保要求的,必須有過期時間uj5u.com熱心網友回復:
讓后端把過期時間設定長,或者每次都重繪一下就行了吧,過期都是后端控制的uj5u.com熱心網友回復:
輪詢ajax請求,不停重繪服務器的最后訪問時間uj5u.com熱心網友回復:
輪詢是嗎,我去看看uj5u.com熱心網友回復:
是的,所以現在他要我幫用戶重繪時間,免登錄uj5u.com熱心網友回復:
噢噢,這個方法我也試試。我加了一個xhrFields:{withCredentials:true},這個好像也可以uj5u.com熱心網友回復:
可以用axios請求攔截,讓后端將token放在頭部回傳給你,約定一下,如果token過期就回傳一個新的給你,如果沒過期就不回傳token在頭部給你這時候你只需要在請求攔截,判斷header里面是否有token,有的話直接替換本地的token,這樣就可以做到不會過期
uj5u.com熱心網友回復:
這個思路好,謝謝
uj5u.com熱心網友回復:
一般情況都是后端做,就像你這個后端設定的過期時間就是后端的鍋,前端能做的,要么讓后端改時間,要么你自己重新請求重繪過期時間uj5u.com熱心網友回復:
通過后臺來保存前端的cookie,把時間設定長些,比如100年再次登錄的時候后臺通過讀取前端cookie的內容來實作登錄
但是,這需要做好賬號的驗證
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/32057.html
標籤:JavaScript
