• 微信小程序之接口验证问题与处理onLaunch与onload异步同步问题


    为了微信小程序接口的安全,我们需要通过一种方法,使得每次请求都需要验证一个key.但是因为异步处理的问题,我们需要先获得这个key存储后才进入下一步

    1、获取开发服务器生成的key

     1 //app.js
     2 App({
     3   globalData: {
     4     isSessionkey:false //是否已经获得key
     5   },
     6 
     7 onLaunch: function () {
     8       var that = this;
     9     wx.login({
    10       success(res) {
    11         if (res.code) {
    12           //console.log(res.code);
    13           //发起网络请求
    14           wx.request({
    15             url: '**/index/zz/getuserinfo',
    16             data: {
    17               code: res.code
    18             },
    19             success: res => {
    /*用户open_id*/
    20 wx.setStorageSync('open_id', res.data.openid); 21 wx.setStorageSync('session_id', res.data.session_id);
    /*服务器加上code等生成的key*/
    22 wx.setStorageSync('session_key', res.data.session_key); 23 that.globalData.isSessionkey=true; 24 // 由于 获取session_key 是网络请求,可能会在Onload之后执行26 // 所以此处加入 sessionCallback 以防止这种情况 27 if (that.sessionCallback) { 28 that.sessionCallback(res); 29 } 30 31 } 32 }) 33 } else { 34 console.log('登录失败!' + res.errMsg) 35 } 36 37 }, fail: function () { 38 39 } 40 }); 41 },

    2、在页面中使用:

     1  init_data:function()
     2  {
    /*页面初始化数据*/
    3 }, 4 onLoad: function () { 5 var that=this; 6 /*存储接口安全key */ 7 //判断是用户是否绑定了 8 if (!app.globalData.isSessionkey) { 9 // 由于 获取session_key 是网络请求,可能会在 Page.onLoad 之后才返回 10 // 所以此处加入 sessionCallback 以防止这种情况 11 app.sessionCallback= res => { 12 13 that.init_data(); 14 15 } 16 }else 17 { 18 that.init_data(); 19 } 20 }

    3、在请求里加上token,并加上sesssion_id 

      

    var webUrl = "https://www.xxxx.com/";
    //网络请求方法
    function getWebDataWithPostOrGet(model,wx) {
      wx.showLoading({
        title: '数据加载中',
      });
      wx.request({
        url: webUrl + model.url,
        data: model.param,
        header: {
          "Content-Type": "application/json",
          "token": wx.getStorageSync('session_key'),
          "cookie": "PHPSESSID="+wx.getStorageSync('session_id')
        },
  • 相关阅读:
    禁止ios10双指缩放
    使用uglifyjs压缩JS
    数组深拷贝的方法
    websocket具体如何使用
    订单支付倒计时-剩余时间xx小时xx分xx秒
    css--内凹圆角
    jQuery 演变史
    手机新闻网页
    [译文]此像素非彼像素,非彼像素
    函数有一个特殊的属性 prototype!
  • 原文地址:https://www.cnblogs.com/fogwang/p/12641132.html
Copyright © 2020-2023  润新知