免费国产欧美国日产_少妇AV一区二区三区无码_蜜桃精品av无码喷奶水小说_jk18禁网站视频_精产国品一二三级产品区别_被夫の上司に犯波多野结衣_78m成人手机免费看_最爽最刺激18禁视频_偷偷色噜狠狠狠狠的777米奇

易優(yōu)GEO 重磅上線 ~ 一站式GEO優(yōu)化工具,讓豆包、文心一言、DeepSeek 在回答中主動(dòng)推薦你的品牌,搶占AI流量入口!  點(diǎn)擊查看

小程序模板網(wǎng)

小程序使用cryptography模塊生成3rd_session

發(fā)布時(shí)間:2018-05-08 10:57 所屬欄目:小程序開發(fā)教程

圖片來自于微信小程序文檔

微信小程序的身份認(rèn)證不同于用戶名+密碼換取token類型的身份認(rèn)證,因?yàn)樾〕绦蚴沁\(yùn)行在微信之上的,用戶信息在微信服務(wù)器,以下說明開發(fā)者如何針對(duì)小程序用戶做身份認(rèn)證.

如果你的小程序時(shí)動(dòng)態(tài)的,需要和后臺(tái)做數(shù)據(jù)交互,那么你需要在小程序啟動(dòng)時(shí)調(diào)用wx.login()方法,該方法會(huì)從微信服務(wù)器獲取一個(gè)code,然后將這個(gè)code發(fā)送至開發(fā)者服務(wù)器,在第三方開發(fā)者服務(wù)器中利用code再從微信服務(wù)器獲取一個(gè)密鑰(session_key)和用戶唯一標(biāo)識(shí)(openid).

如果第三方服務(wù)器有了用戶唯一標(biāo)識(shí),那么開發(fā)者就知道某個(gè)請(qǐng)求來自于哪個(gè)用戶,從而針對(duì)該用戶做數(shù)據(jù)的增刪改查等.

現(xiàn)在有了openid,你不能直接將明文發(fā)送給客戶端,明文直接在網(wǎng)絡(luò)上傳輸有安全風(fēng)險(xiǎn),我們需要將它加密生成3rd_session,這個(gè)密鑰(session_key)就是用來給openid加密用的,注意這個(gè)3rd_session應(yīng)該是可以解密的,因?yàn)?rd_session發(fā)送給客戶端,客戶端在請(qǐng)求數(shù)據(jù)時(shí)需要將這個(gè)3rd_session放在請(qǐng)求頭中發(fā)送給開發(fā)者服務(wù)器作為身份憑證,開發(fā)者將其解密得到openid.

以下給出Python的加密解密模塊cryptography的使用方法,這大概是我知道的使用起來最簡單的Python加密解密模塊了:

 

				
  1. from cryptography.fernet import Fernet
  2.  
  3. # 加密得到3rd_session
  4. def get_3rd_session(self, openid):
  5. key = Fernet.generate_key()
  6. cipher = Fernet(key)
  7. encrypted_data = cipher.encrypt(openid.encode('utf-8'))
  8. return encrypted_data, key

以上代碼沒有用session_key作為key來加密openid,直接用generate_key()方法生成一個(gè)  key,注意這個(gè)key也應(yīng)該保存下來,因?yàn)榻饷軙r(shí)需要加密時(shí)的key.

 

				
  1. def get_openid_from_encrypted_data(self, encrypted_data, key):
  2. cipher = Fernet(key)
  3. raw_data = cipher.decrypt(encrypted_data)
  4. return raw_data
  5.  


易優(yōu)小程序(企業(yè)版)+靈活api+前后代碼開源 碼云倉庫:starfork
本文地址:http://m.szcjxy.com/wxmini/doc/course/24312.html 復(fù)制鏈接 如需定制請(qǐng)聯(lián)系易優(yōu)客服咨詢: 點(diǎn)擊咨詢
在線客服