微信小程序之接口驗證問題與處理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')
    },

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM