微信小程序常见面试题,微信小程序面试题及答案

作者:灰灰来源:JS每日一题

作者:格雷来源:JS日报提问。

面试官:说说微信小程序的登录流程?

00-1010传统web开发实现登录功能,一般方法是输入账号密码,或者输入手机号和短信验证码进行登录。

验证用户信息后,服务器向客户端发送一个代表登录状态的令牌,供后续交互使用。每当令牌过期时,用户需要再次登录。

在微信小程序中,通过微信官方提供的登录能力,可以轻松获取微信提供的用户ID,快速建立小程序中的用户系统,从而实现登录功能。

小程序用户系统的实现主要涉及openid和代码的概念:

调用wx.login()方法会生成代码,并将代码作为参数传递给微信服务器的指定界面,从而获取用户的openid。对于每个小程序,微信会将用户的微信ID映射到一个小程序openid,这将是该用户在该小程序中的唯一标识符。

一、背景

微信小程序登录的具体实现逻辑如下图所示:

面试官:说说微信小程序的登录流程?

通过wx.login()获取用户的代码,判断用户是否被授权读取用户信息,调用wx.getUserInfo读取用户数据。由于后台小程序授权的域名无法对微信的域名进行授权,需要在自己的后端调用微信服务器获取用户信息,通过wx.request()请求服务端服务器。后端将appid、appsecret和代码一起发送到微信服务器。appid和appsecret都是微信提供的,微信服务器返回的会话密钥和本次登录都可以在管理员后台找到。session_key是对数据库中的用户数据进行加密和签名的密钥。如果没有找到记录,则意味着用户没有注册。如果有记录,继续。为了其自身的应用安全,session_key不应该在网络上传输,然后生成并返回给applet。小程序将会话保存在存储器中。当发出下一个请求时,它应该首先从存储中读取它,然后将其带到服务器来比较会话对应的记录,然后验证具有更详细有效期的功能图,如下所示:

面试官:说说微信小程序的登录流程?

在10点到1010点的实际业务中,我们还需要登录状态是否已经过期。通常的方法是将有效性数据保存在登录状态(临时令牌)中,当服务器验证登录状态时,应该与约定的时间(如服务器的本地系统时间或时间服务器上的标准时间)进行比较。

这种方法需要将本地存储的登录状态发送给小程序的服务器,然后当服务器判断登录状态无效时,向小程序返回需要重新执行登录过程的消息。

另一种方法是调用wx.checkSession检查微信的登录状态是否已过期:

如果过期,将启动完整的登录过程。

如果没有过期,请继续使用本地保存的自定义登录状态。

这种方法的优点是不需要小程序服务器参与验证,而是在小程序终端上调用AP,过程如下:

面试官:说说微信小程序的登录流程?

参考文献

https://segmentfault.com/a/1190000016750340

https://juejin.cn/post/6955754095860776973

https://www.cnblogs.com/zwh0910/p/13977278.html

内容来源网络,如有侵权,联系删除,本文地址:https://www.230890.com/zhan/55277.html

(0)

相关推荐