美文网首页
微信小程序用户验证初探

微信小程序用户验证初探

作者: 寒潭碎梦 | 来源:发表于2017-07-11 14:02 被阅读0次

    背景#

    在进行微信小程序开发时,对于用户身份如何验证一直没有找到好的解决方法,就自己思考了一个逻辑,进行用户身份验证.

    逻辑说明#

    验证逻辑图

    实现过程#

    获取token并判断是否获取成功##

    App({
      data: {
          'api_url' : 'https://baoxiu.hrsc.cc/index.php/index/',
          'source_url' : 'https://baoxiu.hrsc.cc/'
      },
      onLaunch: function () {
        wx.getStorage({
          key: 'token',
          success: function(storage){
            that.globalData.token = storage.data;
            wx.request({
              url: that.data.api_url + 'Login/checkLogin',//后台验证登录
              data: {
                token : storage.data
              },
              method: 'POST', // OPTIONS, GET, HEAD, POST, PUT, DELETE, TRACE, CONNECT
              header: {
                'content-type': 'application/json'
              }, // 设置请求的 header
              success: function(res){
                if(res.data.errorcode == 0) {//后台判断已经登录
                  that.globalData.userInfo = res.data.userInfo;//保存登录信息
                } else if(res.data.errorcode == 40001) {//后台判断没有登录
                  go_login();//调用登录函数
                } else {
                  wx.showToast({
                    title: '登录失败',
                    duration: 2000
                  });//显示报错信息
                }
              }
            });
          },
          fail: function(){//获取本地保存的token失败
            //调用登录接口
            wx.login({
              success: function (code) {//获取登录code
                wx.getUserInfo({
                  success: function (info) {//获取个人资料信息
                    wx.request({
                      url: that.data.api_url + 'Login/getUserInfo',//后台获取个人信息
                      data: {
                        'code': code.code,
                        'info': info.userInfo
                      },
                      method: 'POST', // OPTIONS, GET, HEAD, POST, PUT, DELETE, TRACE, CONNECT
                      header: {
                        'content-type': 'application/json'
                      }, // 设置请求的 header
                      success: function(res){//用code换取openid返回信息
                        wx.setStorage({
                          key: 'token',
                          data: res.data.token,
                          success: function(){//保存token验证信息
                            that.globalData.token = res.data.token;
                            if(res.data.errorcode == 0) {//获取个人信息成功,将个人信息进行保存
                              that.globalData.userInfo = {
                                uid: res.data.uid,
                                nickName: info.userInfo.nickName,
                                avatarUrl: info.userInfo.avatarUrl,
                                tel: res.data.tel,
                                address: res.data.address,
                              };
                            } else {
                              wx.showToast({
                                title: '个人信息验证失败',
                                duration: 2000
                              });//显示报错信息
                            }
                          }
                        });
                      }
                    });
                  },
                  fail: function() {
                    wx.showToast({
                      title: '使用需要授权,请删除后重新使用!',
                      duration: 2000
                    });//显示报错信息
                  },
                });
              }
            });
          }
        });
      }
    });
    

    调用的登录函数##

    function go_login(cb) {
      wx.login({
        success: function(res){
          wx.request({
            url: getApp().data.api_url + 'Login/login',
            data: {
              'code': res.code
            },
            method: 'POST', 
            header: {
              'content-type': 'application/json'
            }, // 设置请求的 header
            success: function(res){//请求登录返回数据
              if(res.data.errorcode == 0) {
                wx.setStorage({
                  key: 'token',
                  data: res.data.token,
                  success: function(){
                    getApp().globalData.token = res.data.token;
                    getApp().globalData.userInfo = {
                      uid: res.data.uid,
                      nickName: res.data.nickName,
                      avatarUrl: res.data.avatarUrl,
                      tel: res.data.tel,
                      address: res.data.address,
                    };
                    typeof cb == "function" && cb();//这里可以跟登录成功后的回调函数
                  }
                });
              } else {
                  wx.showToast({
                    title: '登录失败',
                    duration: 2000
                  });//显示报错信息
              }
            }
          })
        }
      });
    }
    

    相关文章

      网友评论

          本文标题:微信小程序用户验证初探

          本文链接:https://www.haomeiwen.com/subject/tztmhxtx.html