前言

小程序授权登录目前基本是每个小程序必备功能,授权过后即可获取该用户头像、名称、性别等信息。本文就闲谈前端小程序授权普遍使用的逻辑!


逻辑讲解

1、用户进入小程序---->发送请求---->根据token(缓存中的)进行判断。

2、缓存中无token,返回用户未登录(登录需要调用授权框)。

3、请求响应回来

    3.1、token失效,重新请求刷新token和失效时间,回调重新请求过来的请求。

    3.2、token未失效(用户已经登录过),直接返回请求数据。

代码演示(逻辑演示)

//独立封装的登录请求login(){ new Promise((resolve,reject)=>{    request("login/login",data).then(res=>{      // long/long为登录请求路径,data为请求所需参数(这里正常是用户数据)      请求完成后 替换token和token过期时间      return resolve("已登录")    }) })}//公共请求的函数request(url,data){  if("该请求需要登录才可请求")  if("token不存在") return Promise.reject("未授权登录");  new Promise((resolve,reject=>{    wx.request({      url:url,      data:data,      success(res){        if("token过期") return login().then(()=>{            // 重新自调用(此时token是未过期状态,因为login()已经进行更新token)            request(url,data)         });          // 将请求结果返回          reslove(res)          //如需抛出错误:reject(err)      }    })  }));}详细讲解:    1、当用户进入页面发送请求时,调用request()函数进行请求。  先判断该请求是否需要登录验证,如果不需要:正常请求。  反之需要:判断token是否存在,不存在,返回未登录。     2、token存在,请求返回后:如果提示token过期,  调用login()函数更新token,回调后重新自调本身“request()”将该请求重新调用。  提示:由于用户首次进来,存在某些主页请求不要求登录验证,此时判断是否登录可根据缓存中的token是否存在进行判断。

提示:演示代码小编没进行错误捕捉处理,实际开发中,大家一定要进行错误捕捉处理!