微信登錄與令牌

Token的意義與作用

有些接口是可以公開訪問的,比如平臺首頁的接口,有些接口是不能公開訪問的,比如客戶賬戶的操作。

對於接口來說,需要確定用戶的身份,那麼就涉及到用戶登錄,然而在API中不存在用戶登錄這個概念,我們是使用令牌來控制用戶的身份,也就是將傳統網站中用戶登錄的這個操作轉換為用戶來獲取一個令牌,這個令牌代表著用戶的身份,而且這個身份是分級別的,也就是登錄就是獲取令牌。

獲取令牌的過程(登錄)


微信登錄與令牌

攜帶令牌訪問接口的過程


微信登錄與令牌

Token有三個層面的驗證:

  • 是否攜帶了合法的token
  • 權限auth是否正確
  • 是否在有效期內

微信身份驗證體系


微信登錄與令牌

現在的客戶端是小程序,可以自己設計一套賬號體系來獲取令牌,但是小程序已經提供了一套微信認證體系,沒有必要再小程序裡面設計自己的賬號密碼。小程序可以為每個登錄的用戶生成一個code,code就是一個數字碼,我們需要將這個碼傳向getToken接口,這個code碼是一個去微信的服務器去換取用戶的身份的標識,微信服務器在接收到code碼之後會返回兩個重要的信息openid和session_key,openid就是用戶身份的標識,session_key的作用是在小程序中直接訪問微信服務器拿到一個加密信息,如果要解密這個信息就需要用到session_key,這個信息包括unique_id,這個ID表示的也是用戶唯一標識,與openid的區別是,openid是一個用戶針對一個小程序有一個openid,也就是說一個用戶在不用的小程序中的openid是不同的就算小程序是同一個賬戶下的,而user_id在同一個賬號下注冊的小程序,用戶的unique_id都是相同的,也就是可以跨不用的應用(不同小程序的關聯)。

openid的作用:

  • 用戶的唯一標識
  • 一些功能性的作用比如微信支付
  • openid需要在數據庫存起來

不能把openid返回到小程序裡去:

  • 這是用戶身份的敏感信息
  • openid是固定不變的,沒有失效期(因此需要令牌,讓令牌有有效期,根據這個令牌去請求opendi從而間接的拿到openid)

為了減輕數據庫的壓力,我們可以藉助緩存機制把令牌存在緩存中以減輕服務器的壓力加快用戶查詢速度(注意openid是存在數據庫中的)。


分享到:


相關文章: