【未經作者本人同意,請勿以任何形式轉載】
》什么是登錄態?
所謂登錄態,就是程序在運行時,能夠識別當前用戶,能夠證明自己的唯一性且合法。
我們知道,WEB服務器通過瀏覽器攜帶的cookie獲取session來判斷是否是同一用戶(或瀏覽器);Restful服務通過客戶端傳過來唯一ID,來識別調用用戶。
》為什么需要維護登錄態?
- 有自身用戶體系的應用
- 用戶敏感數據,只對用戶可見
- 涉及用戶相關的業務,比如我的訂單、個性化推薦等
》小程序登錄態維護實現流程
- 通過wx.login獲取登錄態。
- 通過登錄返回的code發送給服務器,服務器用code換取session_key和openid后。
- 獲取session_key后一般使用緩存框架保存登錄態,服務端隨機生成一串唯一字符串3rdSessionId為key,session_key為value組成鍵值對並存到緩存當中,緩存時間視情況自行決定。
- 將3rdSessionId返回給客戶端
- 客戶端將3rdSessionId緩存到localStorage中,后續接口從緩存中讀取3rdSessionId,傳遞給服務器;服務器根據3rdSessionId來判斷用戶身份。
- 如果服務器根據3rdSessionId在緩存中查找是否存在session_key,如果存在正常執行;如果不存在小程序未登錄,重新從第一步流程走。
以上流程是官方推薦使用的流程,並不是維護登錄態的唯一途徑。
另外,你也可以在小程序中使用wx.checkSession()檢查登錄態是否過期。如果過期重新調用wx.login接口。
session_key在微信服務器有效期是30天,建議服務端緩存session_key不超過30天。
你也可以關注我的微信公眾號『ITNotes』, 一起交流學習 。