前言
小程序授权登录目前基本是每个小程序必备功能,授权过后即可获取该用户头像、名称、性别等信息。本文就闲谈前端小程序授权普遍使用的逻辑!
逻辑讲解
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是否存在进行判断。
提示:演示代码小编没进行错误捕捉处理,实际开发中,大家一定要进行错误捕捉处理!