小程序静默登录,封装请求后台方法

这段代码展示了如何在小程序中进行静默登录,通过缓存管理类获取或设置token,当需要授权时,先检查本地是否有token,没有则调用login方法获取。wx.request用于发送网络请求,成功后返回数据。
摘要由CSDN通过智能技术生成

        静默登录 、请求后台 

import Cache from "../utils/cache";
let cacheObj = new Cache({expire : 7100})
export default class Http{

  req({url,method="GET",data={},isAuth=true}){
    let header = {}
    if(isAuth){
      let token = cacheObj.get('token')
      if(token){
        header.authorization =`Bearer ${token}`
      }else{
        return this.login().then(token=>{
          cacheObj.set('token',token)
          return this.req({url,method,data})
        })
      }
    }
  
    return new Promise(function(suc,fa){
      let modain = "http://www.monthlx.com/api"
      wx.request({
        url:`${modain}/${url}`,
        method:method,
        data:data,
        header:header,
        dataType:"json",
        success:res=>{
          suc(res.data)
        }
        
      })
    })
  }

  login(){
    let _that = this
    return new Promise(function(suc,fa){
      wx.login({
        success:res=>{
          let code = res.code
          _that.req({
            url : 'wxlogin',
            method:"POST",
            data:{code},
            isAuth:false
          }).then(res=>{
            suc(res.data)
          })
        }
      })
    })
  }
}

 缓存

export default class Cache{
  constructor({expire=7200}){
    return this.expire = new Date().getTime() + 1000 * expire 
  }
  /**
   * 设置缓存
   * @param {*} key 
   * @param {*} value 
   */
  set(key,value){
    let valueObj={
      expire : this.expire,
      value : value
    }
    wx.setStorageSync(key,valueObj)
  }

  /**
   * 判断缓存是否存在
   * @param {}} key 
   */
  has(key){
    let valueObj = wx.getStorageSync(key)
    if(valueObj){
      let nowTime = new Date().getTime()
      if(nowTime>valueObj.expire){
        wx.removeStorageSync(key)
        return false
      }else{
        return true
      }
    }else{
      return false
    }
  }

  /**
   * 获取缓存
   * @param {*} key 
   */
  get(key){
    if(this.has(key)){
      return wx.getStorageSync(key).value
    }
  }

  /**
   * 删除缓存
   * @param {*} key 
   */
  del(key){
    return wx.removeStorageSync(key)
  }
}

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值