小程式登錄邏輯
前言:鑒于小程式的限制,不能強制用戶剛進小程式就登錄,用戶需要瀏覽一定的業務后,才能引導用戶進行登錄,
小程式登錄流程
1,呼叫 wx.login() 獲取 臨時登錄憑證code ,并攜帶code向開發者服務器上發起請求,拿到token及其他所需的相關業務資訊
其中 wx.login() => code =>(攜帶code發起請求)=>得到token的處理流程,見下圖:

說明:
呼叫 wx.login() 獲取 臨時登錄憑證code ,并回傳到開發者服務器,
呼叫 auth.code2Session 介面,換取 用戶唯一標識 OpenID 和 會話密鑰 session_key,
之后開發者服務器可以根據用戶標識來生成自定義登錄態,用于后續業務邏輯中前后端互動時識別用戶身份,
注意:
會話密鑰 session_key 是對用戶資料進行 加密簽名 的密鑰,為了應用自身的資料安全,開發者服務器不應該把會話密鑰下發到小程式,也不應該對外提供這個密鑰,
臨時登錄憑證 code 只能使用一次
官方的處理流程:
依據官方流程圖涉及了三個端: 微信小程式客戶端 ,開發者服務器,微信服務器端
1,客戶端使用 wx.login() 獲取 臨時登錄憑證code,然后通過wx.request將code發送到開發者服務器;
2,開發者服務器 憑借用戶的Appid,appsecret和code從 微信服務器 獲取session_key(本次會話密鑰)和openid;
3,開發者服務器 根據獲取到的 session_key(本次會話密鑰)和openid 這兩個資訊定義用戶的登錄狀態,并且將用戶的自定義登錄狀態(即token)回傳給用戶端;
4,客戶端 將 開自定義狀態(token)存入快取中,用戶端 可攜帶自定義狀態發起業務請求
5,開發者服務器 通過自定義狀態 查詢 openid和session_key,并回傳 客戶端 業務資料,
1,呼叫 wx.login() 獲取 臨時登錄憑證code ,并攜帶code向開發者服務器上發起請求,拿到token,userinfor,及 用戶真偽狀態,將這三個值存入快取中
2,判斷真偽狀態(真偽狀態根據后端回傳的資料,也可判斷是否有userinfor),如果是假,即為新用戶,我們可以調起登錄彈窗,提醒用戶登錄;如果為真,即為老用戶,不用登錄,繼續業務邏輯即可;
3,在調取登錄彈窗時,需要重新呼叫wx.login(),獲取新的code,因為code具有時效性且只能使用一次;
4,用戶點擊確認授權登錄后,將得到用戶資訊,iv,及encryptedData,更新快取里的用戶資訊;并根據介面回傳的狀態,更新真偽狀態,如果介面調取成功,狀態即為真,反之則為假,
以上便是一次完整的用戶授權程序
ps:若token過期,重新wx.login() => code =>(攜帶code發起請求)=>得到token,更換快取里的token即可,
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/205392.html
標籤:其他
上一篇:軟體測驗就是這么回事?!
下一篇:企業網路安全|監控解決方案
