微信小程序開發遇到的坑

一.微信用戶隱私信息解密

微信用戶隱私信息解密首先要調用wx.login()方法獲取code,然後在調用wx.getUserInfo()方法獲取加密數據(encryptedData)和偏移量(iv)。如果兩個方法調用返了,則使用Java後臺進行解密的時候會報異常:

javax.crypto.BadPaddingException: pad block corrupted

 

二.關於請求

由wx.request()發起的每次請求對於服務端來說都是不同的一次會話,微信小程序不會把session信息帶回服務端,即對應服務端不同的session,如果項目中使用session保存用戶信息所以導致後續請求相當於未登錄的情況。

解決方案:

1.使用token(令牌)作爲後臺存放登錄信息的key值。然後每次請求在請求路徑上加上token值。

2.在用戶登錄時,將服務器的sessionId值返回給小程序;然後小程序保存sessionId,在後面的每次請求都在請求頭中都攜帶sessionId。

服務端代碼

Sting sessionId = request.getSession().getId();
...    //登錄時的業務代碼
response.getWriter.write(sessionId); //把sessionId返回給前臺

 小程序前端登錄後,把sessionId存入全局變量,這裏以app.js存sessionId的方式舉例:

... //登錄後的邏輯處理
getApp().globalData.header.Cookie = 'JSESSIONID=' + _data.sessionId;

app.js代碼

globalData:{
header:{'Cookie': ''} //這裏還可以加入其它需要的請求頭,比如'x-requested-with': 'XMLHttpRequest'表示ajax提交,微信的請求時不會帶上這個的
},

小程序端請求是帶上sessionId

var header = getApp().globalData.header; //獲取app.js中的請求頭
wx.request({
url: "127.0.0.1:8080/xx/xx",
header: header, //請求時帶上這個請求頭
success:function(res){
  }
}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章