在小程序中,保持登陸狀態是很常見的需求,今天就把寫一寫使用uni-app框架的保持登陸狀態功能是怎樣實現的。html
1、場景需求vue
一、場景:初始打開---登錄---關閉,再次打開---(已登陸)上次關閉前的頁面vuex
二、cookie:傳統應用保持登陸狀態的方式是經過讀取 cookie 來判斷是不是登陸狀態,可是uni-app不支持對cookie的讀寫。小程序
三、實現:uni-app 的官網的API 有這樣一欄「數據緩存」,並且uni-app框架的主體是 VUE,那麼咱們就用 uni.setStorage 和 vuex 進行登陸狀態管理。api
2、實現過程緩存
一、vuex的聲明和使用 請看 《uni-app 使用Vuex+ (強制)登陸》安全
二、在store/index.js 中cookie
三、在App.vue 網絡
每次進入應用前,由App.vue 中的周期函數進行監聽,因此在加載函數中定義方法,從本地緩存中取出用戶數據,而後調用login方法,不須要發起網絡登陸請求。app
這樣就實現了,只有不清除本地緩存,每次打開小程序應用時,都是登陸狀態
3、總結
看到文檔,有同步和異步這兩種緩存數據,那麼關於同步緩存和異步緩存的區別:
以Sync結尾的都是都是同步緩存,兩者的區別是,異步不會阻塞當前任務,同步緩存直到同步方法處理完才能繼續往下執行。
通俗點說,同步就是你下步操做須要上一步必須完成才能往下執行,異步就是下面的代碼和這個操做沒什麼關係就用異步啦。
使用異步,性能會更好;而使用同步,數據會更安全。
一、因此在App.vue中,先是使用了let userInfo = uni.getStorageInfoSync('userInfo')||''; 同步去獲取緩存的數據,由於後續的操做依賴於更改storage後的數據,則須要同步。
二、在使用setStorageSync和setStorage的時發現setStorageSync不能傳入對象