亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

微信小程序如何獲取用戶信息并保存登錄狀態

發布時間:2021-05-22 11:06:52 來源:億速云 閱讀:1903 作者:小新 欄目:web開發

小編給大家分享一下微信小程序如何獲取用戶信息并保存登錄狀態,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!

前言

微信小程序的運行環境不是在瀏覽器下運行的。所以不能以cookie來維護登錄態。

一、登錄態維護

官方的文檔地址:https://mp.weixin.qq.com/debug/wxadoc/dev/api/api-login.html#wxloginobject

通過 wx.login() 獲取到用戶登錄態之后,需要維護登錄態。開發者要注意不應該直接把 session_key、openid 等字段作為用戶的標識或者 session 的標識,而應該自己派發一個 session 登錄態(請參考登錄時序圖)。對于開發者自己生成的 session,應該保證其安全性且不應該設置較長的過期時間。session 派發到小程序客戶端之后,可將其存儲在 storage ,用于后續通信使用。

登錄時序圖

微信小程序如何獲取用戶信息并保存登錄狀態

從上圖可以看出。當我們通過wx.login()獲取code的后,發送給我們的服務器,然后去請求微信服務器換取得到對應的openid與session_key,openid是該用戶在小程序中的唯一標識用于模板通知之類的。session_key就是用來解密用戶的敏感信息。unionid之類的。unionid是微信用戶在所有微信平臺下的唯一標識。下面我會講解一下如何得到。

微信小程序如何獲取用戶信息并保存登錄狀態

以上就是我的實現方法。調用wx.login()得到code后請求服務器獲取openid與session_key緩存在服務器當中。其中生成一個隨機數為key,value為openid與session_key。然后返回到小程序通過wx.setStorageSync('LoginSessionKey',得到的隨機數key)緩存在小程序當中。每當我們去請求服務器時帶上LoginSessionKey即可給服務器讀取從而判斷用戶是否在登錄。是不是很簡單呢?

二、用戶數據的加解密

通過wx.login()登錄之后。我們可以通過wx.getUserInfo()獲取用戶信息。其中一些不敏感的信息在返回的 result中的userInfo里。如想要獲取敏感信息。openid,unionid之類的。則需要從密文中去解密得到。

而密文則在encryptedData這個字段當中。我們去請求我們服務器去解密然后得到敏感信息后則可以保存起來。

加密數據解密算法

接口如果涉及敏感數據(如wx.getUserInfo當中的 openId 和unionId ),接口的明文內容將不包含這些敏感數據。開發者如需要獲取敏感數據,需要對接口返回的加密數據( encryptedData )進行對稱解密。 解密算法如下:

  1. 對稱解密使用的算法為 AES-128-CBC,數據采用PKCS#7填充。

  2. 對稱解密的目標密文為 Base64_Decode(encryptedData),

  3. 對稱解密秘鑰 aeskey = Base64_Decode(session_key), aeskey 是16字節

  4. 對稱解密算法初始向量 iv 會在數據接口中返回。

微信官方提供了多種編程語言的示例代碼(點擊下載)。每種語言類型的接口名字均一致。調用方式可以參照示例。

這時候我們通過小程序得到的result.encryptedData與result.iv與后端得到的session_key 解密出我們得到的敏感用戶信息了。

官方給出的解密文檔:https://mp.weixin.qq.com/debug/wxadoc/dev/api/signature.html

以上是“微信小程序如何獲取用戶信息并保存登錄狀態”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業資訊頻道!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

大邑县| 三门县| 三明市| 九台市| 宜州市| 双辽市| 达日县| 兴文县| 油尖旺区| 惠安县| 塘沽区| 大新县| 天津市| 资中县| 辉南县| 大埔区| 仪陇县| 本溪市| 清涧县| 封丘县| 杂多县| 蓬莱市| 太湖县| 奎屯市| 葫芦岛市| 德钦县| 鄢陵县| 普兰县| 墨竹工卡县| 格尔木市| 庄河市| 泰宁县| 云霄县| 荔浦县| 马龙县| 四子王旗| 汕尾市| 阿克陶县| 闸北区| 桐城市| 额尔古纳市|