cookies 一級域名存儲筆記

關於h5和微信小程序登錄狀態管理

微信小程序登錄狀態管理:

在此次開發中由於須要和小程序作一次小小的通信,因此對小程序的登錄狀態管理有了一些簡單的瞭解:小程序

一、在小程序中獲取微信用戶的登陸憑證(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,
       向第三方也就是本身的後臺服務器認證經過
複製代碼
h5中一般會藉助cookies,而後攜帶到後端接口中來驗證用戶登錄行爲

那麼在這樣的一個場景下:從微信小程序中驗證完用戶登錄,跳轉至h5,同時也須要驗證用戶登錄行爲應該怎麼處理?

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就能夠解決啦
複製代碼
相關文章
相關標籤/搜索