微信小程序开发中非常重要的一步是微信授权登录和服务器用户信息存储。许多学生不了解该过程。让我为每个人解释最简单的登录过程。 微信小程序授权,服务器将信息保存到数据库
通过wx.login()获取用户登录状态后,需要保持登录状态。开发人员应注意不要直接将session_key,openid和其他字段用作用户标识或会话标识,而应自行分配会话登录状态(请参阅登录序列图)。对于开发人员生成的会话,应确保其安全性,并且不应设置较长的到期时间。将会话分派给小程序客户端后,可以将其存储在存储中以供后续通信。
微信小程序授权的登录和用户信息存储过程
实际上,图片非常清晰。清理过程:
1.前端调用wx.login()以获取代码值
2.前端通过调用wx.getUserInfo获得iv,rawData,签名,encryptedData等加密数据,并将其传递给后端
3.服务器使用该代码请求api交换session_key和openid
4.服务器使用sha1加密通过前端给出的rawData获得的session_key并计算签名1
5.检查前端发送的签名是否与其自身计算出的signature1一致(以防止数据不一致)
6.使用AES算法解密cryptocurredData中的敏感数据
7.保留敏感数据后做自己的逻辑
8.通知前端登录成功
这里我只想获取用户的openid,您可以直接进行1,3。
1
第一步:
通过wx.login(微信前端-小程序)接口获取代码,并将代码传输到后端
注意:
代码的来源:当用户打开小程序时它是随机生成的。它是由腾讯产生的。每个代码只能使用一次。因此,从理论上讲,此代码是安全的
2
第2步:
后台通过代码访问微信(腾讯)界面,微信(腾讯)界面返回当前登录信息:session_key和openid。
返回的openid对于每个用户都是唯一的。这样,我们就可以将微信(腾讯)用户与我们的用户进行匹配,也就是说,我们在后台使用openid来确定此人是谁。
UserController.java 微信小程序登录
其中:下面的第三步
//致电service.weChatLogin(model)WeChatLoginResult loginResult = service.weChatLogin(model);
3

第三步:
检查openid在后台是否存在,
转到UserService.java
转到数据库以检查openid是否存在:
UserAccountMapper.java
4
第4步:
发送令牌
生成令牌的步骤:BaseController.java
使用JWT框架生成令牌
到目前为止,让我们完成上述步骤:
微信小程序通过访问wx.login获取代码,将其返回到后端以保存该代码,调用腾讯的界面,并获取诸如openid,seesion-key之类的信息,openid是用户唯一采用的后端将openid登录到数据库检查用户是否是第一次登录。如果是第一次登录,则创建一个新用户-UserAcount;如果不是第一次登录,请修改用户的最后登录时间。不管是否是第一次登录,都有一个用户并根据用户的信息使用它,JWT会生成令牌并将其发送到微信小程序
5
第5步
微信小程序收到令牌后,将其保存
6
第六步
微信小程序请求背景
微信小程序将令牌放入请求标头
7
第七步
首先介绍评论:
Authorize
注意:如果有此评论,则需要验证令牌
使用拦截器来验证令牌
过程: