日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

第三方登录如何给前台返回token_如何设计优雅的第三方账号登录?

發布時間:2023/12/31 编程问答 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 第三方登录如何给前台返回token_如何设计优雅的第三方账号登录? 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

#?前言

????在互聯網應用中,我們構建一個網站或APP,如果沒有用戶,那就沒有價值。所以,如何吸引用戶注冊和登錄,是一個重要問題,而這就涉及到賬號體系了。

? ? 在應用構建初期,用戶量較少,那么自建系統的賬號體系就可以滿足本身系統的業務需求。當應用用戶量較多時(比如QQ、微信等用戶量較多的應用),可提供第三方授權登錄系統,為其他應用提供登錄功能需求。常用登錄如下:

#?常用登錄設計

? ???##??用戶/密碼注冊登錄

????其實很多最初構建的應用系統都是采用這種方式,用戶先注冊,再登錄,才可操作相應業務。其流程圖如下:

? ? 用戶注冊

????流程說明:

  • 前端將用戶名/密碼發送到服務器,服務器進行常規的判斷,判斷用戶名、密碼長度、字符是否滿足要求、用戶是否已經存在等條件,當條件不滿足時候,將對應錯誤碼返回給前端。

  • 此刻的密碼需要進行相應的加密,默認是md5加密,從而防止傳輸過程中數據被攔截,從而被盜號。

  • 數據校驗成功后,便將數據寫入數據庫。

????用戶登錄

????流程說明:

  • 用戶登錄,前端將用戶名/密碼發送到服務器端,服務器端首先校驗登錄次數是否超過設置的閥值,如果超過便等待一段時間(系統設置的過期時間)

  • 如果未超過登錄次數閥值,便判斷用戶名/密碼是否正確,如果不正確便增加登錄失敗次數,如果此時失敗次數超過了閥值,便進入等待階段,系統自動鎖定一段時間(如上)。

  • 登錄成功后才可操作相應的業務。

????##?手機號注冊登錄

????隨著智能移動設備的普及,以及短信業務的成熟,現在很多應用都逐漸采用手機號注冊登錄這種方式來作為應用的登錄需求。手機號注冊登錄這種方式省略常規的注冊,通過驗證碼來進行注冊登錄,當用戶進入應用后進行一個信息補錄,完善用戶信息即可。在如今信息時代,密碼也就變得不那么重要了,手機號-驗證碼這種方式讓用戶能輕便的快速使用應用,不用去記太多的密碼。其流程圖如下:

????流程說明:

  • 用戶輸入手機號,然后發送到服務端,服務端將手機號記錄在我們數據庫中,然后生成隨機驗證碼,并將手機號和驗證碼綁定到一個redis里面,然后記錄過期時間,通常過期時間一般是10分鐘左右,這就是我們一般手機驗證碼的有效期。

  • 手機收到短信后,填寫驗證碼發送到服務器端,服務器端通過查詢Redis中的發送手機對于的驗證碼,比對兩者,失敗返回對于錯誤碼。

  • 成功后可操作后續業務。

????數據庫表設計(根據業務進行修改):?

auto_iduserNamepassWordtelephoneerr_num
1user18js3d4w.....138473874432
2user22h1d68f.....198273723470

#?第三方登錄設計

????在開發微信小程序時,微信其實就是第三方,小程序的登錄,實際上可以理解為以微信作為第三方進行授權登錄,其流程和QQ、微博登錄的流程幾乎一致。時序圖如下:

實現思路:

  • 客戶端調用?wx.login()?獲取?臨時登錄憑證code?,并通過?wx.request()回傳到開發者服務器。

  • 使用?appid+appsecret+code?做參數,調用?auth.code2Session?接口,換取?用戶唯一標識 OpenID?和?會話密鑰 session_key,并返回與OpenID?和?session_key關聯的自定義的登錄態。客戶端將自定義登錄態存入?storage

  • 之后開發者服務器可以根據用戶標識來生成自定義登錄態,用于后續業務邏輯中前后端交互時識別用戶身份。

  • 客戶端再登錄時,通過查詢本地?storage?是否存在自定義登錄態,存在則調用?wx.request() 攜帶自定義登錄態,通過自定義登錄態去查詢 openid Session_key ,從而返回業務數據。

?數據庫表設計

用戶表(users Table):

字段備注
user_id用戶id
token用戶登錄的token
expire_intoken過期時間
try_times登錄失敗次數

用戶驗證關聯表(user_auth_rel Table):

字段備注
id自增id
user_id用戶id
auth_id驗證表id
auth_type驗證類型(local、third)

本地用戶表(user_local_auth Table):

字段備注
auth_id認證id(自增id)
user_name用戶key
password密碼
mobile用戶手機號

第三方用戶表(user_third_auth?Table):

字段備注
auth_id用戶id
openid第三方用戶唯一標識
login_type第三方平臺標識(wechat、QQ等)
access_token第三方獲取的access_token(校驗使用)

補充說明:

  • users 表只針對登錄業務

  • user_local_auth?用于存儲用戶名/密碼、手機號登錄記錄

  • user_third_auth?用戶第三方用戶體系的數據記錄

  • user_auth_rel?是用來關聯 users?、user_local_authuser_third_auth

  • 采用自建用戶與第三方登錄數據分開存儲

總結

以上是生活随笔為你收集整理的第三方登录如何给前台返回token_如何设计优雅的第三方账号登录?的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。