摘要:個(gè)人中心如何加載數(shù)據(jù)截圖中,顯性的數(shù)據(jù)有登陸我的積分瀏覽歷史我的收藏年會(huì)會(huì)員成為會(huì)員時(shí)則顯示會(huì)員到期時(shí)間以上幾個(gè)數(shù)據(jù)都是顯性的,即登陸后就要立刻顯示的。那么這個(gè)頁面數(shù)據(jù)的加載應(yīng)這樣設(shè)計(jì)。
在此之前,先明確:
1、小程序初次載入時(shí)檢查sessionKey和緩存中是否有userInfo,兩個(gè)都滿足時(shí),將全局變量isLoginGlobal: bool 標(biāo)記未true
2、小程序的登陸狀態(tài)依靠全局變量isLoginGlobal: bool 來確認(rèn)登陸與否
3、其他頁面加載時(shí),要優(yōu)先將isLoginGlobal寫入載入data,為true時(shí),再加載緩存中的uesrInfo
4、能加載到userInfo時(shí)(確保萬無一失,加載某個(gè)頁面時(shí),再嘗試讀取一下userInfo的緩存),能加載進(jìn)來則確認(rèn)登陸狀態(tài),反之則不登陸。
附上代碼:
App({ onLaunch() { // 檢查用戶的登陸狀態(tài) this.checkLoginStatus() }, checkLoginStatus() { // 當(dāng)sessionKey和userInfo同時(shí)存在時(shí)才能設(shè)置為登陸狀態(tài) let u = wx.getStorageSync("userInfo") let s = checkSessionLogin() s.then((res) => { if (u) { console.log("設(shè)置為登陸狀態(tài)"); this.globalData.isLoginGlobal = true; } else { console.log("需要重新登陸"); this.globalData.isLoginGlobal = false; } }).catch(err => { console.log("需要重新登陸"); this.globalData.isLoginGlobal = false; }) }, globalData: { // 全局設(shè)置,用來設(shè)置小程序的登陸狀態(tài),依賴sessionKey和userInfo isLoginGlobal: false, }})
/** 1、使用wx.checkSession檢查微信服務(wù)端的sessionKey是否過期 -> 過期則使用wx.login發(fā)請(qǐng)求,反之則保持小* 程序的登陸狀態(tài)* 2、使用wx.login發(fā)起請(qǐng)求*/export const checkSessionLogin = () => { return new Promise((resolve, reject) => { wx.checkSession({ success: (res) => { resolve(res) }, fail: (err) => { reject(err) }, complete: (res) => {}, }) })}
這樣判斷來判斷去,還使用全局變量來維護(hù)登陸狀態(tài)會(huì)不會(huì)很麻煩,其實(shí)我也不清楚,不過感覺這樣很穩(wěn)妥,容錯(cuò)率高。
截圖中,顯性的數(shù)據(jù)有
以上幾個(gè)數(shù)據(jù)都是顯性的,即登陸后就要立刻顯示的。那么這個(gè)頁面數(shù)據(jù)的加載應(yīng)這樣設(shè)計(jì)。
一、登陸狀態(tài)的判斷
isLoginGlobal
,為true
時(shí),繼續(xù)讀取本地緩存userInfo
userInfo
時(shí),將isLogin = true
設(shè)置到本頁面data
中,正式標(biāo)記已登陸
isLoginGlobal
為false
或獲取不到userInfo
的緩存,設(shè)置isLogin = false
,標(biāo)記為未登陸二、未登陸時(shí),不會(huì)展示任何數(shù)據(jù),點(diǎn)擊登陸
后
token
到緩存中userInfo
到緩存中isLoginGlobal = true
、標(biāo)記本頁data: isLogin = true
data
中三、如已登陸
在步驟一中,如果標(biāo)記為登陸,那么應(yīng)及時(shí)向開發(fā)者服務(wù)器發(fā)起請(qǐng)求,接收顯性的數(shù)據(jù)并予以展示,通俗地說,都登陸了,最起碼顯性的數(shù)據(jù)得給人家看吧??
userInfo
是個(gè)關(guān)鍵點(diǎn),因?yàn)榈顷懥四阒辽俚米層脩艨吹絺€(gè)人信息吧,所以這也是維持登陸狀態(tài)的點(diǎn)之一。文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/121406.html
摘要:由于微信小程序沒有一套身份驗(yàn)證管理的框架,只提供等幾個(gè),所以對(duì)于我這種初學(xué)者來說,小程序登陸狀態(tài)管理就顯得很麻煩。按照個(gè)人的理解,需要攜帶??傊?,和只要其中之一不存在,都要把登陸狀態(tài)標(biāo)記為未登陸。不然用戶不清楚不確定是否登陸成功。 ...
摘要:在舒伯的生涯階段里有個(gè)確立階段,歲歲。知識(shí)技術(shù)安卓程序員需要掌握編程語言應(yīng)用框架開發(fā)工具等這些具體的知識(shí)和技術(shù)。技術(shù)能力與閱歷對(duì)安卓程序員來講,知識(shí)技術(shù)是一方面,是容易習(xí)得的,是較淺的層面。 大齡程序員的界定 老早網(wǎng)上有人說,安卓開發(fā)干不過30歲,后來又有人說干不過35歲,后來又有人說干不過...
摘要:教程看到這里,你已經(jīng)學(xué)會(huì)如下內(nèi)容搭建開發(fā)環(huán)境博文管理用戶管理發(fā)表評(píng)論若干小功能搭建簡單的小博客,以上的功能夠用了。教程為了起步平緩,沒有展開這方面的內(nèi)容。陌生人,祝你學(xué)業(yè)進(jìn)步事業(yè)有成歡迎常到杜賽的個(gè)人網(wǎng)站做客 教程看到這里,你已經(jīng)學(xué)會(huì)如下內(nèi)容: 搭建開發(fā)環(huán)境 博文管理 用戶管理 發(fā)表評(píng)論 若干小功能 搭建簡單的小博客,以上的功能夠用了。 相信你的志向不止于此。畢竟程序員面試個(gè)個(gè)造火...
摘要:時(shí)間永遠(yuǎn)都過得那么快,一晃從年注冊(cè),到現(xiàn)在已經(jīng)過去了年那些被我藏在收藏夾吃灰的文章,已經(jīng)太多了,是時(shí)候把他們整理一下了。那是因?yàn)槭詹貖A太亂,橡皮擦給設(shè)置私密了,不收拾不好看呀。 ...
摘要:寫在前面年月日,我只身一人來到北京,開始人生中的第一份工作,在一家國企從事軟件開發(fā)工作。因?yàn)楝F(xiàn)在晚飯都是在公司吃,如果不是刷朋友圈,我是不知道北京哪天的夕陽又刷屏了的,因此錯(cuò)過了很多美麗的瞬間,也算一點(diǎn)遺憾吧。 ...
閱讀 2036·2021-10-09 09:41
閱讀 1608·2021-09-28 09:36
閱讀 1115·2021-09-26 09:55
閱讀 1302·2021-09-10 11:17
閱讀 1159·2021-09-02 09:56
閱讀 2771·2019-08-30 12:58
閱讀 2940·2019-08-29 13:03
閱讀 1866·2019-08-26 13:40