1. 程式人生 > >微信小程式獲取cookie以及設定cookie

微信小程式獲取cookie以及設定cookie

小程式開發中我們需要獲取到後端給的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()方法