一.微信用戶隱私信息解密
微信用戶隱私信息解密首先要調用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){
}
}