本人在前面的微信小程序開發《二》中提到要想在服務端保持狀態需要在客戶端第一次請求服務器的時候給客戶端返回一個sessionid,由客戶端在本地保存,下次請求的時候在header里面帶上這個sessionid,寫到cookie字段里。但是最近發現請求時哪怕每次在header里帶上sessionid還是不能拿到同一個session,百度后終於發現坑了(也不知道微信為啥要這么做),原來微信對wx.request這個API做了修改,小程序發起的請求並不是直接請求我們的后台服務器,而是先通過微信的服務器再發送到我們的后台服務器,既然請求都是要通過微信的服務器發送到我們的服務器,那么我們的服務器也就無從識別請求的發起者了。因此,session在微信小程序的后台開發中是無法使用的。
既然session無法使用,對於本人這種web的后端程序猿該如何是好,只能用別的方式來代替了哦。我用了redis來代替session的功能,當客戶端發送請求到后台服務器時,生成一個隨機字符串作為key,原本要放入session的內容,一般是用戶信息作為value存入redis中,然后將key返回給客戶端,客戶端將key存在本地的storage,在下次請求的時候以參數據形式將key帶上,這樣當后端服務器接收到key時便可以從redis中查找該key對應的value,從而實現了替代session的效果,redis還可以設置key失效的時間。
