<i id="bepur"><bdo id="bepur"><input id="bepur"></input></bdo></i>

<u id="bepur"></u>

<i id="bepur"><bdo id="bepur"></bdo></i>
<u id="bepur"></u>

<i id="bepur"></i>
<i id="bepur"><bdo id="bepur"><ins id="bepur"></ins></bdo></i>

<i id="bepur"><sub id="bepur"></sub></i>

微信小程序開發如何保持登錄狀態(微信小程序判斷登錄狀態)

小程序開發 646
今天給各位分享微信小程序開發如何保持登錄狀態的知識,其中也會對微信小程序判斷登錄狀態進行解釋,如果能碰巧解決你現在面臨的問題,別忘了關注本站,現在開始吧!本文目錄一覽: 1、小程序保持登錄狀態的時長

今天給各位分享微信小程序開發如何保持登錄狀態的知識,其中也會對微信小程序判斷登錄狀態進行解釋,如果能碰巧解決你現在面臨的問題,別忘了關注本站,現在開始吧!

本文目錄一覽:

小程序保持登錄狀態的時長

五到十分鐘。小程序保持登錄狀態的時長為五到十分鐘。微信小程序,簡稱小程序,英文名Mini Program,是一種不需要下載安裝即可使用的應用,它實現了應用“觸手可及”的夢想,用戶掃一掃或搜一下即可打開。

微信小程序的登錄流程

傳統的web開發實現登陸功能,一般的做法是輸入賬號密碼、或者輸入手機號及短信驗證碼進行登錄。

服務端校驗用戶信息通過之后,下發一個代表登錄態的 token 給客戶端,以便進行后續的交互,每當token過期,用戶都需要重新登錄。

而在微信小程序中,可以通過微信官方提供的登錄能力方便地獲取微信提供的用戶身份標識,快速建立小程序內的用戶體系,從而實現登陸功能。

實現小程序用戶體系主要涉及到openid和code的概念:

1.調用wx.login()方法會生成code,將code作為參數傳遞給微信服務器指定接口,就可以獲取用戶的openid。

2.對于每個小程序,微信都會將用戶的微信ID映射出一個小程序 openid,作為這個用戶在這個小程序的唯一標識。

微信小程序登陸具體實現的邏輯如下圖所示:

更加詳細的功能圖如下所示:

實際業務中,我們還需要登錄態是否過期,通常的做法是在登錄態(臨時令牌)中保存有效期數據,該有效期數據應該在服務端校驗登錄態時和約定的時間(如服務端本地的系統時間或時間服務器上的標準時間)做對比。

這種方法需要將本地存儲的登錄態發送到小程序的服務端,服務端判斷為無效登錄態時再返回需重新執行登錄過程的消息給小程。

另一種方式可以通過調用wx.checkSession檢查微信登陸態是否過期:

1.如果過期,則發起完整的登錄流程

2.如果不過期,則繼續使用本地保存的自定義登錄態

這種方式的好處是不需要小程序服務端來參與校驗,而是在小程序端調用AP,流程如下所示:

微信小程序開發-服務端session值取不到;小程序res.header['Set-Cookie']隱藏的坑

問題:本地服務器存取session沒有問題。通過小程序,比如發驗證碼,服務器端將驗證碼存為session。校驗驗證碼的時候重新取session,提示session值不存在。

根源:微信小程序不能保存Cookie,導致每次wx.request到服務端都會創建一個新的會話,從而當前會話不再是之前存驗證碼的那個會話,自然也就取不到session值了。

解決方法:(由于本人很懶,直接參考、引用大神的文章,文末有原文鏈接,原文板塊比較好看一點。我這里重點在于記錄微信小程序的另一個坑。)

普通的Web開發,都是把sessionid保存在cookie中傳遞的。

不管是java還是php,服務端的會在response的header中加上Set-Cookie

例如:

瀏覽器的請求也會在header中加上

例如:

通過這個sessionid就能使瀏覽器端和服務端保持會話,使瀏覽器端保持登錄狀態。但是,微信小程序不能保存Cookie,導致每次wx.request到服務端都會創建一個新的會話,小程序端就不能保持登錄狀態了。

一個比較簡單的辦法就是在小程序端把cookie保存到storage里,后續請求的時候再讀storage,把cookie添加到請求頭里,這樣做的好處就是,服務端不用做任何改動

具體操作如下:

1.把服務端response的Set-Cookie中的值保存到Storage中

2.wx.request再從Storage中取出Cookie,封裝到header中

我在這里還遇到了另外一個問題,當服務器響應多個Set-Cookie時,小程序通過wx.request 回調取res.header['Set-Cookie']所取到的Set-Cookie值是把它們用逗號拼接在一起,從而產生的錯誤的Cookie,這樣請求后臺的時候還是取不到相應的session。而真正需要的是用分號拼接多個Set-Cookie值。例如:

服務器響應:

小程序通過res.header['Set-Cookie']取到的Set-Cookie值卻是:

而真正正確的值應該是smallapp與session_name之間用分號隔開而不是逗號:

但坑終究是坑,寄人籬下,有坑也只得我們自己填。

填坑方法:在步驟2中的if判斷中,自己重新拆分Storage中取出的Cookie,整理成后端需要的規范的cookie。再賦值給header.Cookie。

這個問題暫時沒找到其他解決方案,也請知道的朋友指點一下。

原文引用: 微信小程序開發-保存服務端sessionid的方法

鏈接:【點擊了解更多加盟項目】

怎么讓微信小程序不掉線

不要關閉后臺。

百度搜索“微信公眾平臺”,隨后點擊搜索結果的第一個。在隨后進入的界面中輸入自己的用戶名和密碼,點擊“登錄”按鈕,登錄小程序管理界面。

在接著打開的界面左側點擊“開發管理”按鈕,隨后點擊右側的“暫停服務”按鈕即可。

關于微信小程序開發如何保持登錄狀態和微信小程序判斷登錄狀態的介紹到此就結束了,不知道你從中找到你需要的信息了嗎 ?如果你還想了解更多這方面的信息,記得收藏關注本站。

掃碼二維碼
免费又黄又刺激好看的小说

<i id="bepur"><bdo id="bepur"><input id="bepur"></input></bdo></i>

<u id="bepur"></u>

<i id="bepur"><bdo id="bepur"></bdo></i>
<u id="bepur"></u>

<i id="bepur"></i>
<i id="bepur"><bdo id="bepur"><ins id="bepur"></ins></bdo></i>

<i id="bepur"><sub id="bepur"></sub></i>