如何設計 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、微信、微博的第三方登入和分享封裝
- Android探索與鞏固(微信QQ第三方登陸填坑)Android
- 面試:讓你設計一個第三方賬號登陸你該如何實現?面試
- 第三方登陸:微信掃碼登入
- uni-app第三方登陸-微信APP
- 文章詳情頁面需要分享到第三方,包括qq、qq空間、微博、微信。
- 微信模板介面設計
- 如何設計一個微博系統?- 4招教你搞定系統設計
- 微信授權註冊或微信登陸 微信授權登陸 基於若依vue 實現Vue
- WIN10可以登陸兩個微信嗎 win10電腦微信怎麼雙開兩個賬號Win10
- 想去美國,先要被美國政府審查QQ和微博賬號?
- Lumen/Laravel 中支付寶 / 微信第三方 App 登陸LaravelAPP
- 怎麼同時登陸多個新浪微博賬號,這個便捷方法一定要知道!
- Python模擬微博登陸,親測有效Python
- Android 無需申請key直接呼叫微信/QQ/微博分享Android
- 微信小程式元件設計規範微信小程式元件
- Laravel 第三方登入之微博Laravel
- 登陸鑑權方案設計
- js在微信、微博、QQ、Safari喚起App的解決方案JSAPP
- 旅遊類微信小程式該如何設計製作?微信小程式
- win10 如何登陸多個微信 win10 開啟多個微信方法Win10
- keycloak整合微信登陸~解決國內微信整合的問題
- 微信隱私安全設定教程 如何設定微信隱私安全?
- 2018最新程式設計師必備技術類微信公眾號程式設計師
- 使用 GitLab 賬號登陸 KubeSphereGitlab
- 微信小程式開發系列二:微信小程式的檢視設計微信小程式
- 淺談微信小程式登陸與Oauth微信小程式OAuth
- 微信訂閱號設為星標方法 微信公眾號怎麼置頂?
- 微信轉錯賬撤回設定方法 微信轉錯了錢怎麼撤回?
- Java QQ授權第三方登陸Java
- 今天,騰訊NintendoSwitch開通官方微博、微信公眾號
- PostgreSQL類微博FEED系統-設計與效能指標SQL指標
- 微信UI設計之WeUI前端樣式庫UI前端
- 微信小程式應用安全分析及設計微信小程式
- win10系統為什麼微軟賬號登陸一直顯示賬號密碼錯誤Win10微軟密碼
- 微信或QQ遮蔽域名,爆紅域名如何在微信開啟,如何進行微信域名防封?
- 微信小程式手機號登入微信小程式