作為一個開發(fā)JavaWeb應(yīng)用的程序猿,都喜歡將用戶登錄后的用戶信息(比如說用戶id,用戶名稱)放入session中保存,之后在業(yè)務(wù)邏輯的開發(fā)中需要用到用戶信息的時候就可以輕松又方便的從session中取到值。最近在開發(fā)微信小程序的時候碰到一個問題就是每次微信小程序請求的時候都會改變sessionid,這就會導(dǎo)致在后面的請求中取不到登錄時保存在session中的用戶信息,其實(shí)在前后端分離開發(fā)的時候也會碰到這個問題,后端程序員負(fù)責(zé)服務(wù)器端開發(fā),提供接口程序,前端程序員負(fù)責(zé)客戶端開發(fā),調(diào)用后端程序員提供的接口程序獲取數(shù)據(jù),此時,前端程序員請求的每個接口程序也是都會改變sessionid的,因些也無法獲取到登錄時保存在session里的用戶信息。 常見的session保持方式是,當(dāng)瀏覽器向服務(wù)端發(fā)起http請求時,服務(wù)端檢查在http頭部cookie參數(shù)里是否包含sessionid,如果有sessionid就根據(jù)sessionid去查看存儲在服務(wù)器端的session,session里保存的當(dāng)前會話的一些信息。如果sessionid沒有服務(wù)端就會分配一個,寫到cookie字段里,瀏覽器下次發(fā)起其它請求的時候帶上。 因此,為了解決上面我說的問題,我們可以這樣做,客戶端在第一次請求服務(wù)器時,也就是登錄的時候獲得一個sessionid,在本地存儲起來,然后在之后每次請求服務(wù)器的時候就在header里面帶上這個sessionid,寫到cookie字段里。但是有個問題就是,你本地存儲了這個sessionid后那么以后每次都會是這個sessionid,所以建議在程序每次啟動的時候先清空本地存儲的sessionid,然后發(fā)送首次請求獲取新的sessionid。 如下為ajax請求時在header中帶上sessionid的客戶端代碼:
作者:小狼咕咕 原文:http://www.cnblogs.com/zengxiaoliang/p/6945055.html |