等下班杂记

5 篇文章 0 订阅
2 篇文章 0 订阅

natapp的使用

1.首先后端给的通道,前端通过 natapp xxxxxx启动 2.配置启动后的域名,下载文件到目标根目录 3.记得用域名打开 而不是ip地址和localhost 4.localhost只能自己的电脑访问。

小程序登录流程的封装

这个我只能是自己看看那的哈 ,因为这不是我想到的。
我在简书借鉴了别人的思路。
我曾经做过一个比较不友好的登录,将openid直接存在了本地,但是我后来通过了解。其实不应该去那样做。
首先我想的是所有的登录验证都是通请求接口去访问,得到登录已经过期,那么
此时去保存当前请求接口的所有参数包括回调函数,
在去调用登录接口重新获取token,
token获取成功之后,重新去请求将保存的参数赋值给这个请求。

var SAVE_POSTDATA = {} //定义一个全局变量用来存储没有登录时 所传的的请求参数
function requestPost(url, data, callback,failback) {
  wx.getNetworkType({
    success: res => {
      const networkType = res.networkType
      const token = wx.getStorageSync('token')
      if (networkType === 'none') {
        wx.showToast({
          title: '请检查网络',
          icon: 'loading',
          duration: 2000,
          mask: true
        })
        return false
      } else {
        wx.request({
          method: 'POST',
          url: host + url,
          data: data,
          header: {
            'content-type': 'application/x-www-form-urlencoded',
            'cache-control': 'no-cache'
          },
          success(res) {
            if(res.data.code == -1){//如果token失效
              //这里保存请求参数
              SAVE_POSTDATA.url = url
              SAVE_POSTDATA.data = data
              SAVE_POSTDATA.callback = callback
              login().then()//重新去获取token
            }else if (res.data.code ===0){
              callback(res)
            }else{
              wx.showModal({
                title: '提示',
                content: res.data.message
              })
            }
          },
          fail(res){
            if(failback){
              failback()
            }
          }
        })
      }
    }
  })
}
/**
 * @param  page 是否是从登录页传过来
 * 当且仅当从登录也传值过来的时候才会执行成功的回调
 * 其他时候都只会在post中去重新载入页面 并且重载当前页面
 */
const login = function(page){
  return new Promise((resolve, reject) => {
    wx.login({
      success: function (res) {
        if (res.code) {
          wx.request({
            method: 'POST',
            url: host + '/apppublic/mpLogin',
            data: {
              code: res.code
            },
            header: {
                'content-type': 'application/x-www-form-urlencoded',
                'cache-control': 'no-cache'
            },
            success: function (res) {
              // console.log(res)
              // 登录成功
              if (res.data.code === 0) {
                wx.setStorageSync('token', res.data.data)
                if(page == 'formLogin'){
                  resolve(res)
                }else{
                  wx.showToast({
                    title: '登录中',
                    icon: 'loading',
                    duration: 1000
                  })
                  setTimeout(function() {
                    wx.showToast({
                      title: '登录成功',
                      icon: 'none',
                      duration: 500
                    })
                    /**
                    * 以下注释代码已经成功80%,但是目测不能使用于收藏,因为数据没有更新的时候后台会报错 '非收藏状态不能取消收藏'等
                    * 解决办法:
                    * 1.确保能获取到最新的状态 -- 在调用关注、收藏 等接口中 判断当前是否处于登录状态(及判断token是否存在),
                    * 存在即刷新当前页面数据在回调中写这个方法这样就能确保都 能获取到最近的状态了
                    * but 获取最新数据的办法是啥? 重新获取这个接口 刷新数据 所以回来了↓↓↓↓↓↓↓↓↓↓  不就是刷新页面吗 。。。
                    */
                    // SAVE_POSTDATA.data.token = res.data.data
                    // requestPost(SAVE_POSTDATA.url,SAVE_POSTDATA.data,SAVE_POSTDATA.callback)
                    loadPage() //跟更新当前页面的数据(及其登录数据)
                  },999)
                }
              }else if(res.data.code === -2 && page != 'formLogin'){
                toPageSetBack()
              }else{
                reject(res)
              }
            }
          })
        } else {
          console.log('获取用户登录态失败!' + res.errMsg)
        }
      },
    });
  })
}
/**
 * 跟更新当前页面的数据(及其登录数据)
 * 意在只更新数据和状态,但是中断后,操作请求不会再次执行
 */
const loadPage = function () {
  let pages = getCurrentPages();
  const perpage = pages[pages.length - 1]
  let {options} = pages.pop();
  perpage.onLoad(options);
  perpage.onShow();
}

但是我这个项目没有采用这个方法。为什么注释我也已经写好了。
不怕别人看到我的不足,我只是怕自己不知道不足
不怕别人看到我的不足,我只是怕自己不知道不足
不怕别人看到我的不足,我只是怕自己不知道不足
请给予指导批评

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值