欢迎来到258分享网,纯净的网络源码分享基地!

258资源分享网

全部作品
全部作品
网站源码
微信源码
素材特效
源码插件
视频教程
建站学院
热门搜索: 织梦  农业种植  农业  安全设置  官方
258资源分享 > 建站学院 > 微信开发 > 小程序使用cryptography模块生成3rd_session

推荐下载

HTML5响应式自适应网咯设计

2020-05-12   浏览:789

HTML5自适应律师工作室类网

2020-04-04   浏览:654

高端HTML5响应式企业通用网

2020-05-06   浏览:560

html5响应式外贸网站英文版

2020-05-08   浏览:545

HTML5影视传媒文化公司类网

2020-05-12   浏览:543

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

发布时间:2020-10-28  

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

图片来自于微信小程序文档

微信小程序的身份认证不同于用户名+密码换取token类型的身份认证,因为小程序是运行在微信之上的,用户信息在微信服务器,以下说明开发者如何针对小程序用户做身份认证.

如果你的小程序时动态的,需要和后台做数据交互,那么你需要在小程序启动时调用wx.login()方法,该方法会从微信服务器获取一个code,然后将这个code发送至开发者服务器,在第三方开发者服务器中利用code再从微信服务器获取一个密钥(session_key)和用户唯一标识(openid).

如果第三方服务器有了用户唯一标识,那么开发者就知道某个请求来自于哪个用户,从而针对该用户做数据的增删改查等.

现在有了openid,你不能直接将明文发送给客户端,明文直接在网络上传输有安全风险,我们需要将它加密生成3rd_session,这个密钥(session_key)就是用来给openid加密用的,注意这个3rd_session应该是可以解密的,因为3rd_session发送给客户端,客户端在请求数据时需要将这个3rd_session放在请求头中发送给开发者服务器作为身份凭证,开发者将其解密得到openid.

以下给出Python的加密解密模块cryptography的使用方法,这大概是我知道的使用起来最简单的Python加密解密模块了:

 

from cryptography.fernet import Fernet

 

# 加密得到3rd_session

def get_3rd_session(self, openid):

key = Fernet.generate_key()

cipher = Fernet(key)

encrypted_data = cipher.encrypt(openid.encode('utf-8'))

return encrypted_data, key

以上代码没有用session_key作为key来加密openid,直接用generate_key()方法生成一个  key,注意这个key也应该保存下来,因为解密时需要加密时的key.

 

def get_openid_from_encrypted_data(self, encrypted_data, key):

cipher = Fernet(key)

raw_data = cipher.decrypt(encrypted_data)