用户
 找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,登录网站

小程序社区 首页 教程 新手教程 查看内容

用Flask加解密微信小程序中的3rd_session

yeayee 2017-4-27 11:13

如题,在上一文章中分析了3rd_session和OpenId的关系,为确保随机散列值和OpenId的唯一对应关系,完全可以借助Flask中的itsdangerous 的TimedJSONWebSignatureSerializer来实现这一目标,具体操作流程如下: ... ...

如题,在上一文章中分析了3rd_session和OpenId的关系,为确保随机散列值和OpenId的唯一对应关系,完全可以借助Flask中的itsdangerous 的TimedJSONWebSignatureSerializer来实现这一目标,具体操作流程如下: 
step1: Flask中导入相应的库:

  1. from itsdangerous import TimedJSONWebSignatureSerializer as Serializer
  2. def gen_3rdsession(openId):
  3. # 用OpenId加密生成3rdsession
  4. s = Serializer(current_app.config['SECRET_KEY'])
  5. third_session = s.dumps({'openId': openId})
  6. return third_session
  7. def gen_openId(thirdsession):
  8. # 用3rdsession解密生成OpenId
  9. s = Serializer(current_app.config['SECRET_KEY'])
  10. openId = s.loads(thirdsession)['openId']
  11. return openId

step2:生成3rdsession:

  1. third_session = gen_3rdsession(openId)

这个3rdsession本身就是Bsion格式,类似于Json,可以直接返回。

step3:然后在小程序中获取:

  1. var third_session = data.data;
  2. console.log(third_session)
  3. try {wx.setStorageSync('third_session', third_session)}
  4. catch (e) {}

将其保存在本地缓存中。

step4:接下来就是在POST数据时,将third_session提交至服务器进行解密获取Openid,进而在数据库查询用户的相关数据。

呵呵,该加密应该是绝对安全的,每次加密的数据是不一样的,加密后的OpenId==3rd_session如下:

  1. eyJhbGciOiJIUzI1NiIsImV4cCI6MTQ5MzI2NDc5NCwiaWF0IjoxNDkzMjYxMTk0fQ.eyJvcGVuSWQiOiJvaXJiczBMT1dyajF2ZDRzVHAtamNxd1FWNy1JIn0.GM2THjHKYM_Rt8gBJuZcWNwDxxz1TgoAZCKLyOWs9Uk
鲜花
鲜花
鸡蛋
鸡蛋
分享至 : QQ空间
收藏
原作者: yeayee 来自: 原创

相关阅读