微信小程式獲取cookie以及設定cookie
阿新 • • 發佈:2018-11-28
小程式開發中我們需要獲取到後端給的cookie進行請求驗證,但是微信並沒有幫我們儲存cookie,那麼我們要維持會話需要自己來儲存cookie,並且請求的時候加上cookie
1.獲取cookie
在登入請求後讀取 返回值的, header的cookie,並本地儲存
//登入請求回來之後,讀取res的header的cookie
//這裡的sessionid隨便寫的,就是個唯一標識
wx.setStorageSync("sessionid", res.header["Set-Cookie"])
2.請求帶上cookie
//建立header var header; header = { 'content-type': 'application/x-www-form-urlencoded', 'cookie':wx.getStorageSync("sessionid")//讀取cookie }; //進行請求,一般外層都有一個封裝,然後放在公共類裡邊 wx.request({ url: realURL, method: method, header: header,//傳在請求的header裡 data: datas, success(res) { //請求成功的處理 } )}
3.接下來需要將sessinid在本地管理的方法
var sessionkey; var sessiondate; //可以封裝一個儲存sessinid的方法,將sessionid儲存在localstorage中,定為半小時之後清空此sessionid快取。 function saveSession(sessionId) { console.log(" now save sessionid: " + sessionId) wx.setStorageSync(“sessionkey” sessionId)//儲存sessionid wx.setStorageSync(“sessiondate”, Date.parse(new Date()))//儲存當前時間, } // 過期後清除session快取 function removeLocalSession() { wx.removeStorageSync(“sessionid的key”) wx.removeStorageSync(sessiondate) console.log("remove session!") } //檢查sessionid是否過期的方法 function checkSessionTimeout() { var sessionid = wx.getStorageSync(sessionkey) if (sessionid == null || sessionid == undefined || sessionid == "") { console.log("session is empty") return false } var sessionTime = wx.getStorageSync(sessiondate) var aftertimestamp = Date.parse(new Date()) if (aftertimestamp - sessionTime >= SESSION_TIMEOUT) { removeLocalSession() return false } return true } //如果sessionid過期,重新獲取sessionid function checkSessionOk() { console.log("check session ok?...") var sessionOk = checkSessionTimeout() if (!sessionOk) { requestsessionid(function () { }) }} //定義一個方法每隔一段時間檢查sessionid是否過期 function checkcrosstime() { setInterval(checkSessionTimeout, ----)//這個時間可以自定義。比如25 * 60 * 1000(代表25分鐘) }
可以在app.js的onload方法中執行checkcrosstime()方法