解决繁琐的小程序登录态管理的组件——dologin
mtonhuang opened this issue · comments
解决繁琐的小程序登录态管理的组件。
[TOC]
一、背景
在微信xxx小程序中,用户可以通过多种方式登录xx号,进入对应的业务页面。但是,如果每次登录都需要清除登录态,再根据获得的code重新登录的话,这样代码较冗余,请求较多,性能较差。因此,我们需要写一个dologin组件。
二、业务要求
微信xxx小程序登录账号,一共有几大业务来源,分别是:
- 公众号模板消息;
- 外部小程序带登录态跳转;
- 注册后登录;
- 切换账号。
其中需要带入参数做跳转登录的业务入口有外部小程序带登录态跳转、注册后登录、公众号模板消息。
dologin组件根据业务来源以及带入的参数,进行重置登录账号或者登录账号。
三、技术难点
-
业务来源的多样性
业务来源比较多,未来还可能增加,保证dologin组件应对不同来源的兼容与包容性,方便后期各个来源状态管理、维护等。 -
重置登录的设计
巧妙运用setStorage缓存,请求初始化getStorage获取登录态,对比新旧登录态,如果发现不同,则重置登录,如果相同,则运用当前登录态登录。如果getStorage无值,则直接登录。
四、前端设计
dologin组件的本质是一个登录的过程,具体实现原理如下:
- 不同业务来源带入参数(目标页url,xx号参数,xxx号参数);
- dologin组件初始化获取入参;
- 全局获取登录态;
- 登录;
- 到达目标页面url(默认首页)。
其中第3步全局获取登录态后,根据是否有本地缓存登录态又分为重置登录和直接登录。如果没有本地缓存,则直接登录;反之,校验登录态是否一致,如果一致则直接登录,如果不一致,则重置登录。
五、源码地址
dologin(暂不开源),以上实现原理供参考。
Contributing
mtonhuang