在此次開發中由於須要和小程序作一次小小的通信,因此對小程序的登錄狀態管理有了一些簡單的瞭解:小程序
一、在小程序中獲取微信用戶的登陸憑證(code)
小程序的登陸直接使用官方api接口wx.login(),從微信的官方服務器換取接口憑證code。
而後在小程序的app.js和後臺進行交互,將code發給本身的後臺服務器進行登陸換取token
二、獲取用戶的openid和session_key
經過小程序請求的code,咱們後臺再次請求微信的服務器獲取微信用戶的信息,也就是openid和session_key。
這裏微信有一個規定,參數值只能拼接在後面,不能經過HttpClient的map參數放上去,須要注意一下。
經過這個接口的調用,能夠拿到用戶openid,和session_key,如今當前登陸的帳戶就在微信的服務器中產生了登陸態
具體驗證登錄成功和失敗能夠看相關文檔
三、小程序中會藉助緩存來實現用戶登錄以後狀態的一個存儲
在用戶第一次登錄成功以後,會返回用戶相應的token,並放入storage緩存中,每次發送請求都在請求接口的的header去取相應的token,
向第三方也就是本身的後臺服務器認證經過
複製代碼
1:經過cookies
若是不經過特殊處理,會出現微信小程序受權登錄成功,跳到h5發現驗證登錄未經過
緣由:小程序是沒有cookie的,經過緩存機制保存用戶登錄態,因此到h5頁面是沒有相應有登錄態標識的cookie攜帶到後端接口
解決辦法:
目前想到的解決辦法是在小程序中驗證經過後拋出登錄標識帶到h5中,由h5存儲cookies,而後請求時攜帶過去,用來經過驗證
2.具體方法設置:
cookie存入一級域名下來解決這個問題:
document.cookie = name + '=' + escape(value) + ';expires=' + exp.toGMTString() + ';path=/;domain=.aaa.com'
若是不設置存儲域的話默認是存在當前域下:好比q.aaa.com,若是先後端分離,後端在m.aaa.com下這個cookies是攜帶不過去的,
那麼解決辦法就是設置這個登錄標識cookies的 domian在.aaa.com就能夠解決啦
複製代碼