亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

如何實現設計一個第三方賬號登陸

發布時間:2021-09-29 16:36:15 來源:億速云 閱讀:230 作者:iii 欄目:大數據

這篇文章主要介紹“如何實現設計一個第三方賬號登陸”,在日常操作中,相信很多人在如何實現設計一個第三方賬號登陸問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”如何實現設計一個第三方賬號登陸”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!

名稱解釋

這里的多賬戶區別于系統級別的,我們講的多賬戶系統是指,在我們互聯網應用當中,我們的應用會使用多個第三方賬號進行登錄,必須現在常用的APP(網易云音樂)登錄方式包含:網易、微信、QQ

內容

通過這一篇文章, 可以學到:多用戶下面的技術方案細節,以及相應的表設計,流程設計。 不可以:與其他文章一樣,我這里不會有具體代碼實現細節,方案做的對,代碼咋寫都不會太爛。

如何實現設計一個第三方賬號登陸

架構演進

創業初期

歸結為創業初期是因為這個時候用戶量比較少,甚至還沒有接入上面所說的其他第三方的賬戶系統,只是自建的體系就可以滿足,自建體系的話,目前常用的有

用戶名密碼注冊登陸

這種方式在很多初期網站建設會使用,先注冊,再進行登錄,在老一點的cms中都能找到這個影子。

流程圖:

如何實現設計一個第三方賬號登陸

流程說明:

  1. 前端將用戶名、密碼發送到服務器,服務器進行常規的判斷,判斷用戶名、密碼長度是否滿足,用戶名是否重復等條件,條件不通過直接返回對應錯誤碼給到前端,這里密碼字段,為了防止傳輸過程中被截胡,建議加密再上傳,我們的傳輸密碼默認都是會進行一個md5加密,然后記錄到數據庫再進行一層加密,就算是脫庫也沒事,密碼不要明文存儲。

  2. 校驗通過后,就將用戶名密碼寫入數據庫,并進行后面積分發放等操作,這里不展開。

  3. 現在進行登錄,前端將用戶名,密碼發送給到服務端,服務端首先會校驗登錄次數是否超過設置的閾值,如果超過只能繼續等待被關小黑屋。

  4. 如果未超過繼續登錄邏輯,判斷用戶名、密碼是否正確,不正確密碼則進行閾值的判斷,如果超過則關小黑屋,記住小黑屋必須設置過期時間,要不然就會永久關上了,這個可以用redis的過期來做。

  5. 登錄成功后進行后續的一切后置邏輯,比如加積分。。。等操作。

手機號注冊登陸

流程圖:

如何實現設計一個第三方賬號登陸

流程說明:

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

  2. 手機接收到手機短信后,那么就在界面填寫驗證碼發送服務端,服務端收到驗證碼后就會在redis里面查詢到這個手機號對應的驗證碼,失敗就返回錯誤碼。

  3. 成功后就進行登錄操作。

這里看起來沒有明確的注冊登錄操作,其實在發送手機號碼就可以認為是一個常規的注冊,然后后面的驗證碼輸入就是一個登陸操作,

問: 那我要密碼咋辦?

答: 在后續產品里面增加一個手機號碼密碼補錄的功能即可,這也是現在很常規的手法,但是現在移動互聯網大爆炸時代,密碼已經顯得不是那么重要了,反正我從來記不住密碼,如果手機號碼能操作的app,絕對不用密碼來操作。

數據庫設計

表結構
自增id用戶名密碼手機號錯誤次數
1user17fef6171469e80d32c0559f88b377245134567890120
2user27fef6171469e80d32c0559f88b377245134567890130
說明
  1. 這里只是單純說明需要用到的數據,沒有擴展具體場景,這個表結構能夠滿足上面兩個方案的設計。

引入第三方賬戶方案

這里是以QQ-SDK的登錄邏輯, 我們先來一波時序圖

如何實現設計一個第三方賬號登陸

說明:

  1. 客戶端自己調起登錄的界面,進行輸入用戶名、密碼,這里的是第三方的用戶名,密碼,登錄成功后,會返回access_token openid expire_in,這過程會使用到oauth3.0,不過在sdk里面進行內置回調獲取了,后面我們會說明我們自身實現的oauth3.0

  2. 客戶端拿到access_token、openid、login_type(qq、wechat...)請求應用服務器,應用服務器拿到這些數據后就會根據對應的login_type去對應的用戶中心進行access_token和openid進行校驗。校驗不通過則返回對應錯誤碼

  3. 校驗通過后就會判斷本地是否有這個login_type和openid是否存在,不存在則進行獲取遠程的用戶名、頭像等基礎信息來作為本地基礎數據,并且返回code值

  4. 如果已經存在,那就是進行登錄操作,返回code值。

  5. 客戶端拿到code值后進行token值的換取,這個完全遵照oauth3.0的協議來走的,后續每次請求必須帶上token,token值在服務端的時間比較久,因為我們想要做的是那種永不下線的操作,所以每次請求我們都將token過期時間進行累加。

數據庫設計

表結構

對于評論處 @講不出再見1486617502000 的建議,我這里做一下數據庫的整理 用戶基礎表(users)

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

用戶驗證關聯表(user_auth_rel)

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

本地用戶表(user_local_auth)

字段備注
auth_id認證id,自增id
user_name用戶唯一標識
password用戶密碼
mobile用戶手機

第三方用戶表(user_third_auth)

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

說明

  1. users表只是單純針對我們業務側的登錄,主要是做自身業務的oauth3.0業務,

  2. user_local_auth是做自己用戶名、密碼登錄,手機號碼登錄信息記錄,

  3. user_third_auth是我們第三方用戶體系的數據記錄,

  4. user_auth_rel是用來關聯我們users表與user_local_auth、user_third_auth。

  5. 整個設計理念就是將自建用戶與第三方在存儲上區分,這在架構演進上也是合乎情理的,開始用戶體系大多自建,而后才是對外接入。

到此,關于“如何實現設計一個第三方賬號登陸”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續學習更多相關知識,請繼續關注億速云網站,小編會繼續努力為大家帶來更多實用的文章!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

高阳县| 浪卡子县| 车致| 汕头市| 衡水市| 闸北区| 江永县| 千阳县| 泸州市| 靖远县| 崇文区| 萝北县| 寿阳县| 遂昌县| 台东县| 通河县| 兴和县| 屏山县| 三亚市| 进贤县| 太仆寺旗| 固镇县| 兴化市| 富锦市| 合川市| 太谷县| 扬州市| 永仁县| 太仓市| 嵊泗县| 沛县| 新巴尔虎右旗| 新田县| 聊城市| 舞阳县| 广丰县| 上饶市| 乌拉特前旗| 抚顺县| 弥勒县| 瓮安县|