如何設計 QQ、微信、微博、Github 等等,第三方賬號登陸 ?(附表設計)
前言:多賬戶登陸 1. 創業初期 使用者名稱密碼註冊登陸 手機號註冊登陸 2. 資料庫設計 3. 引入第三方賬戶方案 4. 資料庫設計 5. 總結
前言:多賬戶登陸
1. 創業初期
使用者名稱密碼註冊登陸
前端將使用者名稱、密碼傳送到伺服器,伺服器進行常規的判斷,判斷使用者名稱、密碼長度是否滿足,使用者名稱是否重複等條件,條件不透過直接返回對應錯誤碼給到前端,這裡密碼欄位,為了防止傳輸過程中被截胡,建議加密再上傳,我們的傳輸密碼預設都是會進行一個md5加密,然後記錄到資料庫再進行一層加密,就算是脫庫也沒事,密碼不要明文儲存。 校驗透過後,就將使用者名稱密碼寫入資料庫,並進行後面積分發放等操作,這裡不展開。 現在進行登入,前端將使用者名稱,密碼傳送給到服務端,服務端首先會校驗登入次數是否超過設定的閾值,如果超過只能繼續等待被關小黑屋。 如果未超過繼續登入邏輯,判斷使用者名稱、密碼是否正確,不正確密碼則進行閾值的判斷,如果超過則關小黑屋,記住小黑屋必須設定過期時間,要不然就會永久關上了,這個可以用redis的過期來做。 登入成功後進行後續的一切後置邏輯,比如加積分等操作。
手機號註冊登陸
首先輸入手機號,然後傳送到服務端,服務端將手機號記錄在我們資料庫中,然後生成隨機驗證碼,並將手機號和驗證碼繫結到一個redis裡面,然後記錄過期時間,這個過期時間一般是10分鐘左右,這就是我們一般手機驗證碼的有效期。 手機接收到手機簡訊後,那麼就在介面填寫驗證碼傳送服務端,服務端收到驗證碼後就會在redis裡面查詢到這個手機號對應的驗證碼,失敗就返回錯誤碼。 成功後就進行登入操作。
2. 資料庫設計
3. 引入第三方賬戶方案
客戶端自己調起登入的介面,進行輸入使用者名稱、密碼,這裡的是第三方的使用者名稱,密碼,登入成功後,會返回access_token openid expire_in,這過程會使用到oauth2.0,不過在sdk裡面進行內建回撥獲取了,後面我們會說明我們自身實現的oauth2.0 客戶端拿到access_token、openid、login_type(qq、wechat…)請求應用伺服器,應用伺服器拿到這些資料後就會根據對應的login_type去對應的使用者中心進行access_token和openid進行校驗。
校驗透過後就會判斷本地是否有這個login_type和openid是否存在,不存在則進行獲取遠端的使用者名稱、頭像等基礎資訊來作為本地基礎資料,並且返回code值 如果已經存在,那就是進行登入操作,返回code值。 客戶端拿到code值後進行token值的換取,這個完全遵照oauth2.0的協議來走的,後續每次請求必須帶上token,token值在服務端的時間比較久,因為我們想要做的是那種永不下線的操作,所以每次請求我們都將token過期時間進行累加。
4. 資料庫設計
users表只是單純針對我們業務側的登入,主要是做自身業務的oauth2.0業務, user_local_auth是做自己使用者名稱、密碼登入,手機號碼登入資訊記錄, user_third_auth是我們第三方使用者體系的資料記錄, user_auth_rel是用來關聯我們users表與user_local_auth、user_third_auth。 整個設計理念就是將自建使用者與第三方在儲存上區分,這在架構演進上也是合乎情理的,開始使用者體系大多自建,而後才是對外接入。
5. 總結
希望大家能夠透過以上學習,能夠對於我們多賬戶登入有一個比較好的認知,這裡設計方案不包含分表分庫、沒有服務化,就是簡單直接的設計,當然使用者量和需要的不一樣,在這個基礎上還要加很多東西,謝謝大家閱讀,喜歡文章歡迎轉發,點贊。
作者丨低調的碼農;來源:
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31557372/viewspace-2671003/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 面試:讓你設計一個第三方賬號登陸你該如何實現?面試
- 【網頁登入】QQ 登入、微信登入、微博登入、GitHub 登入網頁Github
- 封裝QQ、微信、微博的第三方登入和分享封裝
- Git多賬號登陸Git
- Web應用多賬號系統設計及微信掃碼登入實現Web
- Android探索與鞏固(微信QQ第三方登陸填坑)Android
- Java QQ授權第三方登陸Java
- 使用 GitLab 賬號登陸 KubeSphereGitlab
- PHP 微博登陸PHP
- 微信公號DIY:MongoDB 簡易ORM & 公號記賬資料庫設計MongoDBORM資料庫
- 《匿名》第七課----登陸介面設計
- 如何快速接入 GitHub 登陸Github
- 找程式設計師女神要QQ號碼程式設計師
- uni-app第三方登陸-微信APP
- pbootcms如何修改後臺的登陸地址/賬號以及密碼boot密碼
- Github暫停俄羅斯程式設計師賬戶Github程式設計師
- 登陸註冊按鈕的樣式設計
- 豪橫!程式設計師搭建技術部落格,就只需一個GitHub賬號程式設計師Github
- 如何設計一個微博系統?- 4招教你搞定系統設計
- Android社交登入授權、分享SDK,支援微信、微博和QQAndroid
- 如何設計APP登入模組?APP
- 值得程式設計師和設計師關注的微信公眾號程式設計師
- WinAPI程式設計關閉QQ登入窗體 (轉)API程式設計
- 轉賬介面設計
- .Net程式設計師安卓學習之路1:登陸介面程式設計師安卓
- QQ使用者登陸介面
- Linux賬號安全——使用者登陸許可權Linux
- Java介面程式設計實戰(一)——簡易QQ登入介面Java程式設計
- WIN10可以登陸兩個微信嗎 win10電腦微信怎麼雙開兩個賬號Win10
- 第三方登入 (微博登入 web)Web
- Lumen/Laravel 中支付寶 / 微信第三方 App 登陸LaravelAPP
- QQ登陸不上 QQ登陸錯誤0x00000001程式碼怎麼辦
- 微信模板介面設計
- GitHub的產品設計Github
- linux 本地賬號密碼無法登陸(shell可以登入),一直返回 登陸的login介面Linux密碼
- ios 上qq以及微信上面第三方庫的登入iOS
- 用ChatGPT,快速設計一個真實的賬號系統ChatGPT
- 使用者登陸驗證資訊的資料結構設計資料結構