www.久久久久|狼友网站av天堂|精品国产无码a片|一级av色欲av|91在线播放视频|亚洲无码主播在线|国产精品草久在线|明星AV网站在线|污污内射久久一区|婷婷综合视频网站

當(dāng)前位置:首頁(yè) > 公眾號(hào)精選 > 架構(gòu)師社區(qū)
[導(dǎo)讀]低調(diào)的碼農(nóng)|https://sourl.cn/tzZUzN 多賬戶的統(tǒng)一登錄 名稱解釋 這里的多賬戶區(qū)別于系統(tǒng)級(jí)別的,我們講的多賬戶系統(tǒng)是指,在我們互聯(lián)網(wǎng)應(yīng)用當(dāng)中,我們的應(yīng)用會(huì)使用多個(gè)第三方賬號(hào)進(jìn)行登錄,比如現(xiàn)在常用的APP:網(wǎng)易、微信、QQ等等。 內(nèi)容 通過(guò)這一篇文章:


面試官問(wèn)我:如何設(shè)計(jì) QQ、微信等第三方賬號(hào)登陸 ?還要我說(shuō)出數(shù)據(jù)庫(kù)表設(shè)計(jì)!

低調(diào)的碼農(nóng)|https://sourl.cn/tzZUzN

多賬戶的統(tǒng)一登錄

名稱解釋

這里的多賬戶區(qū)別于系統(tǒng)級(jí)別的,我們講的多賬戶系統(tǒng)是指,在我們互聯(lián)網(wǎng)應(yīng)用當(dāng)中,我們的應(yīng)用會(huì)使用多個(gè)第三方賬號(hào)進(jìn)行登錄,比如現(xiàn)在常用的APP:網(wǎng)易、微信、QQ等等。

內(nèi)容

通過(guò)這一篇文章:

  1. 可以學(xué)到:多用戶下面的技術(shù)方案細(xì)節(jié),以及相應(yīng)的表設(shè)計(jì),流程設(shè)計(jì)。
  2. 不可以學(xué)到:與其他文章一樣,我這里不會(huì)有具體代碼實(shí)現(xiàn)細(xì)節(jié),方案做的對(duì),代碼咋寫都不會(huì)太爛。
面試官問(wèn)我:如何設(shè)計(jì) QQ、微信等第三方賬號(hào)登陸 ?還要我說(shuō)出數(shù)據(jù)庫(kù)表設(shè)計(jì)!

架構(gòu)演進(jìn)

創(chuàng)業(yè)初期

歸結(jié)為創(chuàng)業(yè)初期是因?yàn)檫@個(gè)時(shí)候用戶量比較少,甚至還沒有接入上面所說(shuō)的其他第三方的賬戶系統(tǒng),只是自建的體系就可以滿足,自建體系的話,目前常用的有

用戶名密碼注冊(cè)登陸

這種方式在很多初期網(wǎng)站建設(shè)會(huì)使用,先注冊(cè),再進(jìn)行登錄,在老一點(diǎn)的cms中都能找到這個(gè)影子。

流程圖:

面試官問(wèn)我:如何設(shè)計(jì) QQ、微信等第三方賬號(hào)登陸 ?還要我說(shuō)出數(shù)據(jù)庫(kù)表設(shè)計(jì)!

流程說(shuō)明:

  1. 前端將用戶名、密碼發(fā)送到服務(wù)器,服務(wù)器進(jìn)行常規(guī)的判斷,判斷用戶名、密碼長(zhǎng)度是否滿足,用戶名是否重復(fù)等條件,條件不通過(guò)直接返回對(duì)應(yīng)錯(cuò)誤碼給到前端,這里密碼字段,為了防止傳輸過(guò)程中被截胡,建議加密再上傳,我們的傳輸密碼默認(rèn)都是會(huì)進(jìn)行一個(gè)md5加密,然后記錄到數(shù)據(jù)庫(kù)再進(jìn)行一層加密,就算是脫庫(kù)也沒事,密碼不要明文存儲(chǔ)。
  2. 校驗(yàn)通過(guò)后,就將用戶名密碼寫入數(shù)據(jù)庫(kù),并進(jìn)行后面積分發(fā)放等操作,這里不展開。
  3. 現(xiàn)在進(jìn)行登錄,前端將用戶名,密碼發(fā)送給到服務(wù)端,服務(wù)端首先會(huì)校驗(yàn)登錄次數(shù)是否超過(guò)設(shè)置的閾值,如果超過(guò)只能繼續(xù)等待被關(guān)小黑屋。
  4. 如果未超過(guò)繼續(xù)登錄邏輯,判斷用戶名、密碼是否正確,不正確密碼則進(jìn)行閾值的判斷,如果超過(guò)則關(guān)小黑屋,記住小黑屋必須設(shè)置過(guò)期時(shí)間,要不然就會(huì)永久關(guān)上了,這個(gè)可以用redis的過(guò)期來(lái)做。
  5. 登錄成功后進(jìn)行后續(xù)的一切后置邏輯,比如加積分。。。等操作。

手機(jī)號(hào)注冊(cè)登陸

流程圖:

面試官問(wèn)我:如何設(shè)計(jì) QQ、微信等第三方賬號(hào)登陸 ?還要我說(shuō)出數(shù)據(jù)庫(kù)表設(shè)計(jì)!

流程說(shuō)明:

  1. 首先輸入手機(jī)號(hào),然后發(fā)送到服務(wù)端,服務(wù)端將手機(jī)號(hào)記錄在我們數(shù)據(jù)庫(kù)中,然后生成隨機(jī)驗(yàn)證碼,并將手機(jī)號(hào)和驗(yàn)證碼綁定到一個(gè)redis里面,然后記錄過(guò)期時(shí)間,這個(gè)過(guò)期時(shí)間一般是10分鐘左右,這就是我們一般手機(jī)驗(yàn)證碼的有效期。
  2. 手機(jī)接收到手機(jī)短信后,那么就在界面填寫驗(yàn)證碼發(fā)送服務(wù)端,服務(wù)端收到驗(yàn)證碼后就會(huì)在redis里面查詢到這個(gè)手機(jī)號(hào)對(duì)應(yīng)的驗(yàn)證碼,失敗就返回錯(cuò)誤碼。
  3. 成功后就進(jìn)行登錄操作。

這里看起來(lái)沒有明確的注冊(cè)登錄操作,其實(shí)在發(fā)送手機(jī)號(hào)碼就可以認(rèn)為是一個(gè)常規(guī)的注冊(cè),然后后面的驗(yàn)證碼輸入就是一個(gè)登陸操作,

問(wèn): 那我要密碼咋辦?

答: 在后續(xù)產(chǎn)品里面增加一個(gè) 手機(jī)號(hào)碼密碼補(bǔ)錄的功能 即可,這也是現(xiàn)在很常規(guī)的手法,但是現(xiàn)在移動(dòng)互聯(lián)網(wǎng)大爆炸時(shí)代,密碼已經(jīng)顯得不是那么重要了,反正我從來(lái)記不住密碼,如果手機(jī)號(hào)碼能操作的app,絕對(duì)不用密碼來(lái)操作。

數(shù)據(jù)庫(kù)設(shè)計(jì)

表結(jié)構(gòu)

自增id 用戶名 密碼 手機(jī)號(hào) 錯(cuò)誤次數(shù)
1 user1 7fef6171469e80d32c0559f88b377245 13456789012 0
2 user2 7fef6171469e80d32c0559f88b377245 13456789013 0

說(shuō)明

這里只是單純說(shuō)明需要用到的數(shù)據(jù),沒有擴(kuò)展具體場(chǎng)景,這個(gè)表結(jié)構(gòu)能夠滿足上面兩個(gè)方案的設(shè)計(jì)。

引入第三方賬戶方案

這里是以QQ-SDK的登錄邏輯, 我們先來(lái)一波時(shí)序圖

面試官問(wèn)我:如何設(shè)計(jì) QQ、微信等第三方賬號(hào)登陸 ?還要我說(shuō)出數(shù)據(jù)庫(kù)表設(shè)計(jì)!

說(shuō)明:

  1. 客戶端自己調(diào)起登錄的界面,進(jìn)行輸入用戶名、密碼,這里的是第三方的用戶名,密碼,登錄成功后,會(huì)返回access_token openid expire_in,這過(guò)程會(huì)使用到oauth2.0,不過(guò)在sdk里面進(jìn)行內(nèi)置回調(diào)獲取了,后面我們會(huì)說(shuō)明我們自身實(shí)現(xiàn)的oauth2.0
  2. 客戶端拿到access_token、openid、login_type(qq、wechat...)請(qǐng)求應(yīng)用服務(wù)器,應(yīng)用服務(wù)器拿到這些數(shù)據(jù)后就會(huì)根據(jù)對(duì)應(yīng)的login_type去對(duì)應(yīng)的用戶中心進(jìn)行access_token和openid進(jìn)行校驗(yàn)。校驗(yàn)不通過(guò)則返回對(duì)應(yīng)錯(cuò)誤碼
  3. 校驗(yàn)通過(guò)后就會(huì)判斷本地是否有這個(gè)login_type和openid是否存在,不存在則進(jìn)行獲取遠(yuǎn)程的用戶名、頭像等基礎(chǔ)信息來(lái)作為本地基礎(chǔ)數(shù)據(jù),并且返回code值
  4. 如果已經(jīng)存在,那就是進(jìn)行登錄操作,返回code值。
  5. 客戶端拿到code值后進(jìn)行token值的換取,這個(gè)完全遵照oauth2.0的協(xié)議來(lái)走的,后續(xù)每次請(qǐng)求必須帶上token,token值在服務(wù)端的時(shí)間比較久,因?yàn)槲覀兿胍龅氖悄欠N永不下線的操作,所以每次請(qǐng)求我們都將token過(guò)期時(shí)間進(jìn)行累加。

數(shù)據(jù)庫(kù)設(shè)計(jì)

根據(jù)部分小伙伴的的建議,我這里做一下數(shù)據(jù)庫(kù)的整理:

用戶基礎(chǔ)表(users)

字段 備注
user_id 用戶id
token 用戶登陸的token
expire_in token過(guò)期時(shí)間
try_times 登錄失敗次數(shù)

用戶驗(yàn)證關(guān)聯(lián)表(user_auth_rel)

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

本地用戶表(user_local_auth)

字段 備注
auth_id 認(rèn)證id,自增id
user_name 用戶唯一標(biāo)識(shí)
password 用戶密碼
mobile 用戶手機(jī)

第三方用戶表(user_third_auth)

字段 備注
auth_id 用戶id
openid 第三方用戶唯一標(biāo)識(shí)
login_type 第三方平臺(tái)標(biāo)識(shí)(qq、wechat...)
access_token 第三方獲取的access_token,校驗(yàn)使用

說(shuō)明

  1. users表只是單純針對(duì)我們業(yè)務(wù)側(cè)的登錄,主要是做自身業(yè)務(wù)的oauth2.0業(yè)務(wù),
  2. user_local_auth是做自己用戶名、密碼登錄,手機(jī)號(hào)碼登錄信息記錄,
  3. user_third_auth是我們第三方用戶體系的數(shù)據(jù)記錄,
  4. user_auth_rel是用來(lái)關(guān)聯(lián)我們users表與user_local_auth、user_third_auth。
  5. 整個(gè)設(shè)計(jì)理念就是將自建用戶與第三方在存儲(chǔ)上區(qū)分,這在架構(gòu)演進(jìn)上也是合乎情理的,開始用戶體系大多自建,而后才是對(duì)外接入。

總結(jié)

  1. 總的來(lái)講,第三方用戶的接入技術(shù)上來(lái)講是比較簡(jiǎn)單的,這里設(shè)計(jì)多一個(gè)user_thirds是可以支持足夠多的第三方接入,當(dāng)然一般我們也就兩三個(gè)登錄就好,太多登錄方不僅自身維護(hù)成本,界面擺盤也不好看不是。
  2. 希望大家能夠通過(guò)以上學(xué)習(xí),能夠?qū)τ谖覀兌噘~戶登錄有一個(gè)比較好的認(rèn)知,這里設(shè)計(jì)方案不包含分表分庫(kù)、沒有服務(wù)化,就是簡(jiǎn)單直接的設(shè)計(jì),當(dāng)然用戶量和需要的不一樣,在這個(gè)基礎(chǔ)上還要加很多東西,謝謝大家閱讀!!!

特別推薦一個(gè)分享架構(gòu)+算法的優(yōu)質(zhì)內(nèi)容,還沒關(guān)注的小伙伴,可以長(zhǎng)按關(guān)注一下:

面試官問(wèn)我:如何設(shè)計(jì) QQ、微信等第三方賬號(hào)登陸 ?還要我說(shuō)出數(shù)據(jù)庫(kù)表設(shè)計(jì)!

長(zhǎng)按訂閱更多精彩▼

面試官問(wèn)我:如何設(shè)計(jì) QQ、微信等第三方賬號(hào)登陸 ?還要我說(shuō)出數(shù)據(jù)庫(kù)表設(shè)計(jì)!

如有收獲,點(diǎn)個(gè)在看,誠(chéng)摯感謝

免責(zé)聲明:本文內(nèi)容由21ic獲得授權(quán)后發(fā)布,版權(quán)歸原作者所有,本平臺(tái)僅提供信息存儲(chǔ)服務(wù)。文章僅代表作者個(gè)人觀點(diǎn),不代表本平臺(tái)立場(chǎng),如有問(wèn)題,請(qǐng)聯(lián)系我們,謝謝!

本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請(qǐng)聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請(qǐng)及時(shí)聯(lián)系本站刪除。
換一批
延伸閱讀

9月2日消息,不造車的華為或?qū)⒋呱龈蟮莫?dú)角獸公司,隨著阿維塔和賽力斯的入局,華為引望愈發(fā)顯得引人矚目。

關(guān)鍵字: 阿維塔 塞力斯 華為

倫敦2024年8月29日 /美通社/ -- 英國(guó)汽車技術(shù)公司SODA.Auto推出其旗艦產(chǎn)品SODA V,這是全球首款涵蓋汽車工程師從創(chuàng)意到認(rèn)證的所有需求的工具,可用于創(chuàng)建軟件定義汽車。 SODA V工具的開發(fā)耗時(shí)1.5...

關(guān)鍵字: 汽車 人工智能 智能驅(qū)動(dòng) BSP

北京2024年8月28日 /美通社/ -- 越來(lái)越多用戶希望企業(yè)業(yè)務(wù)能7×24不間斷運(yùn)行,同時(shí)企業(yè)卻面臨越來(lái)越多業(yè)務(wù)中斷的風(fēng)險(xiǎn),如企業(yè)系統(tǒng)復(fù)雜性的增加,頻繁的功能更新和發(fā)布等。如何確保業(yè)務(wù)連續(xù)性,提升韌性,成...

關(guān)鍵字: 亞馬遜 解密 控制平面 BSP

8月30日消息,據(jù)媒體報(bào)道,騰訊和網(wǎng)易近期正在縮減他們對(duì)日本游戲市場(chǎng)的投資。

關(guān)鍵字: 騰訊 編碼器 CPU

8月28日消息,今天上午,2024中國(guó)國(guó)際大數(shù)據(jù)產(chǎn)業(yè)博覽會(huì)開幕式在貴陽(yáng)舉行,華為董事、質(zhì)量流程IT總裁陶景文發(fā)表了演講。

關(guān)鍵字: 華為 12nm EDA 半導(dǎo)體

8月28日消息,在2024中國(guó)國(guó)際大數(shù)據(jù)產(chǎn)業(yè)博覽會(huì)上,華為常務(wù)董事、華為云CEO張平安發(fā)表演講稱,數(shù)字世界的話語(yǔ)權(quán)最終是由生態(tài)的繁榮決定的。

關(guān)鍵字: 華為 12nm 手機(jī) 衛(wèi)星通信

要點(diǎn): 有效應(yīng)對(duì)環(huán)境變化,經(jīng)營(yíng)業(yè)績(jī)穩(wěn)中有升 落實(shí)提質(zhì)增效舉措,毛利潤(rùn)率延續(xù)升勢(shì) 戰(zhàn)略布局成效顯著,戰(zhàn)新業(yè)務(wù)引領(lǐng)增長(zhǎng) 以科技創(chuàng)新為引領(lǐng),提升企業(yè)核心競(jìng)爭(zhēng)力 堅(jiān)持高質(zhì)量發(fā)展策略,塑強(qiáng)核心競(jìng)爭(zhēng)優(yōu)勢(shì)...

關(guān)鍵字: 通信 BSP 電信運(yùn)營(yíng)商 數(shù)字經(jīng)濟(jì)

北京2024年8月27日 /美通社/ -- 8月21日,由中央廣播電視總臺(tái)與中國(guó)電影電視技術(shù)學(xué)會(huì)聯(lián)合牽頭組建的NVI技術(shù)創(chuàng)新聯(lián)盟在BIRTV2024超高清全產(chǎn)業(yè)鏈發(fā)展研討會(huì)上宣布正式成立。 活動(dòng)現(xiàn)場(chǎng) NVI技術(shù)創(chuàng)新聯(lián)...

關(guān)鍵字: VI 傳輸協(xié)議 音頻 BSP

北京2024年8月27日 /美通社/ -- 在8月23日舉辦的2024年長(zhǎng)三角生態(tài)綠色一體化發(fā)展示范區(qū)聯(lián)合招商會(huì)上,軟通動(dòng)力信息技術(shù)(集團(tuán))股份有限公司(以下簡(jiǎn)稱"軟通動(dòng)力")與長(zhǎng)三角投資(上海)有限...

關(guān)鍵字: BSP 信息技術(shù)
關(guān)閉
關(guān)閉