1。背景传统的web开发实现登录功能。一般的方法是输入账号密码,或者输入手机号和短信验证码登录,服务器验证用户信息后,向服务器下发一个代表登录状态的token。客户端,为了进行后续的交互,每当token过期,用户都需要重新登录。在微信小程序中,可以通过微信提供的官方登录能力轻松获取微信提供的用户身份,快速建立小程序中的用户身份。用户系统,从而实现登录功能。小程序用户系统的实现主要涉及到openid的概念和代码:调用wx.对于每一个小程序,微信都会将用户的微信ID映射到一个小程序openid作为用户在这个小程序中的唯一标识2.流程微信小程序登录的具体实现逻辑如下图所示:)获取用户代码判断用户是否有读取用户信息的权限,调用wx.getUserInfo读取用户数据。由于小程序后台授权域名无法授权微信域名,需要自己的后台调用微信服务器获取用户信息,通过wx.request()方法请求业务服务器,后台发送appid,appsecret和code到微信服务器。appid和appsecret都是微信提供的。在管理员后台可以找到微信服务器。返回此登录的openid和会话密钥session_key。后端从数据库中搜索openid。如果没有查到记录,说明该用户还没有注册。如果有记录的话,继续往下走。session_key是加密和签署用户数据的密钥。为了自身应用的安全,不应在网络上传输session_key再生成session返回给小程序。小程序将会话存储在存储器中。下一次请求时,先从存储中读取,然后带到服务器端比对session对应关系。记录,然后验证有效期。更详细的功能图如下:3、在实际业务拓展中,我们还需要检查登录状态是否过期。通常的做法是在登录状态(temporarytoken)保存有效期数据。有效期在服务器端验证登录状态时,需要将数据与约定的时间(如服务器本地系统时间或时间服务器上的标准时间)进行比较。该方法需要将本地存储的登录状态发送给小程序的服务器。当服务端判断登录状态为无效时,返回消息给小程需要重新执行登录流程。另一种方式是调用wx.checkSession检查微信登录状态是否过期:如果过期,则发起完整的登录流程;如果没有,继续使用本地保存的自定义登录状态的好处是不需要小程序服务器参与验证,而是在小程序端调用AP。过程如下:参考https://segmentfault.com/a/1190000016750340https://juejin.cn/post/6955754095860776973https://www.cnblogs.com/zwh0910/p/13977278.html