小程序获取sessionkey_微信小程序登录并且获取sessionkey详解

本文介绍了微信小程序登录过程及如何获取sessionkey。在登录态维护阶段,通过wx.login()获取code并交换openid和session_key,将其安全存储。在用户数据加解密部分,利用session_key解密encryptedData获取敏感信息。详细解析了加密数据的解密算法,并提供了解密流程。了解更多详情可访问:www.kejipro.cn。
摘要由CSDN通过智能技术生成

随着小程序的兴起,越来越多的人都选择制作一款小程序,但是小程序开发的时候会遇到很多问题。下面小编就给大家讲解一下如何登录微信小程序并且获取sessionkey。

一、登录态维护

通过 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 解密出我们得到的敏感用户信息了。

相信看了上面的简析,相信大家都有所了解了吧!想要了解更多相关资讯,请登录:www.kejipro.cn.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值