1.登陆认证(demo版暂只支持手机号登陆)- 同时获取用户基本信息

step1: app端通过appId向微信拉取authorization_code

step2:请求接口url

 created(){
     //获取sessionStorge 数据 调用imToken,一般在调用到该界面后肯定是有数据的,及时获取到token数据
     if (imToken() === null) {
         this.userLogin();
     }
 },

      

在此处进行获取imToken值

function imToken() {
    return sessionStorage.getItem('imToken');
}

此时若不含值,则进行信息登录重新获取

  methods:{
    //用户信息登录
    async userLogin() {

        //测试账号数据信息
        let params = {"lg_pin":"","logType":"","cellPhone":""};

        const res = await this.$http.get(this.$api.login, params);

        //调取数据成功
        if (res.data.code === 0) {
            //判断数据是否为空
            if (res.data.data.length != 0 || res.data.data.length != null) {
                setImtoken(res.data.data.imToken);
                setPin(res.data.data.pin);
            } else {

            }
        }else {
            setImtoken(null)
        }
    }
},

2.在api接口中实现加密/转码操作

a.get请求调用,传递api的参数
除去登录以外,需要将业务参数和系统参数追加成一个urlEncode格式

  get (url, params) {
    var param;
    //判断登录情况,此时若为登录不需要加密处理
    if (url === "/login") {
      param = params;
    }else {

      param = formateParm(params);
    }
    var urlencode = urlEncode(host + url,param);
    return axios({
      method: 'get',
      url:urlencode,
      timeout: 10000,
      headers: {
          'content-Type': 'application/json'

      },
      request: 'XMLHttpRequest',
    }).then(
      (response) => {
          // console.log(response.status)

          return checkStatus(response)
      }
    ).then(
      (res) => {
        return checkCode(res)
      }
    )
  }

格式化参数,在业务参数中追加系统参数,pin/时间戳/token值

通过SHA.js合成参数值

function formateParm(parm) {

    var sign = "";
    parm['pin'] = pin();

    var timeStamp = new Date().getTime();

    console.log(timeStamp);

    parm['timeStamp'] = timeStamp;
    var params = Object.keys(parm).sort();
    for (var ki in params) {
        sign += params[ki] + parm[params[ki]];
    }

    sign = sign + imToken();

    console.log(SHA1(sign) + "--sha1")

    parm["sign"] = SHA1(sign);

    return parm
}

转码urlEncode格式

let urlEncode = (url, data) => {
   if (typeof (url) === undefined || url === null || url === ''){
        return ''
    }else if (typeof (data) === undefined || data === null || typeof (data) !== 'object'){
        return url
    }else {
       url += (url.indexOf('?') !== -1) ? '' : '?'
       for (let k in data) {
           url += ((url.indexOf('=') !== -1) ? '&' : '') + k + '=' + encodeURI(data[k])
       }
       return url
   }
}
Logo

前往低代码交流专区

更多推荐