app登陸,注冊,第三方登陸數據設計及業務流程


本片文章主要講解一下,登陸的三種方式,以及數據庫的設計和業務流程的設計。

一、前期准備

1. 如果要支持短信驗證碼登陸:需要注冊第三方短信平台,並研究其集成接口。
2. 如果要支持第三方登陸(如QQ,微信,微博等):需要到對應的開放平台進行注冊,客戶端可以自己根據對應平台的集成接口進行處理,也可以用一些第三方平台,如友盟

二、數據庫設計

1.用戶基礎信息表user_bases
字段名 描述    
id 用戶id,自增    
username 用戶名    
password 密碼    
email 電子郵箱    
phone 手機號    
nickname 昵稱    
... 更多的基礎信息    
2.用戶認證信息表user_auths(如果不涉及第三方登陸,不用創建這個表)
字段名 描述    
id 自增    
uid 關聯用戶user_bases的id    
third_key 三方登陸唯一標識    
third_type 三方登陸類型(例如wx:微信,qq:QQ登陸,wb:微博)    

3. 說明

3.1 說一說登陸的具體處理
(1)用戶名、手機號、email+密碼登陸:

直接調用接口,傳遞賬戶名和密碼,在user_bases表中查詢並匹配password(password需要做加密處理)

(2)手機號+短信驗證碼登陸,分為兩步:

a.發送驗證碼接口:客戶端:調用發送驗證碼接口,攜帶手機號碼。后台:調用第三方短信平台接口,返回驗證碼保存到redis中,並添加時效。
b.客戶端收到短信驗證碼后填寫,調用驗證碼登陸接口:首先驗證驗證碼,正確的話再根據手機號查詢用戶信息。

(3)第三方登陸:

a.客戶端首先調用三方平台提供的接口:返回唯一標識及用戶信息(昵稱,頭像等)。

b.調用后台提供的三方登陸接口(攜帶上步返回的數據):
    首先需要在user_auths表中查詢third_key是否存在唯一標識,有:說明已經創建了用戶,沒有:未創建。
    未創建時需要在user_auths中插入一條數據,然后再在user_auths中插入一條數據。

3.2 說一說一個賬號綁定多個三方賬號的具體處理

綁定多個三方賬號的前提是:已存在一個賬號。這樣綁定三方賬號時,只需在user_auths中插入一條數據即可(對應已存在的那個賬號),這樣就實現了一對多的關系。具體看下實現:

users
  | id | username   | password  | email     | phone    | nickname | ...
  | 1  | qaz123     |124568     |...        |1523652.. | 張三     | ...
  | 2  | lijds963   |985236     |...        |1856321.. | 李四     | ...
user_auths
  | id | uid  | third_key  |third_type|...
  | 1  | 1    |*********** |weixin    |...
  | 2  | 1    |*********** |qq        |...
  | 3  | 2    |*********** |weixin    |...
  | 4  | 2    |*********** |qq        |...
  | 5  | 1    |*********** |weibo     |...

三、時序圖,業務流程

下圖為三種登陸方式的時序圖:

 

四、涉及到的接口

1.用戶名、手機號、email+密碼登陸:

(1)用戶名、手機號、email+密碼登陸接口

2.手機號+短信驗證碼登陸:

 (1)發送驗證碼接口
 (2)調用第三方短信平台接口(后台直接與三方交互,與客戶端無關)
 (3)手機號+驗證碼登陸接口

3.三方登陸:

 (1)通過三方提供的接口獲取唯一標識和相關用戶信息(客戶端調用,與后台無關)
 (2)三方登陸接口

4.注冊

(1)手機號+驗證碼注冊

5.修改密碼,綁定,解除綁定

 (1)修改密碼接口
 (2)解除綁定,三方登陸接口
 (3)綁定手機,三方登陸接口

說明:1.有些朋友可能會將三種登陸接口做成一個接口,也不是不行,但個人感覺這樣代碼能顯得更獨立,實現解耦,也方便修改。

   2.如果第一次用app就直接用微信授權登錄,那時用戶表還沒有用戶數據,關系表中的uid獲取不到,應該如何處理?獲取不到uid的話,就說明沒有注冊,這時就要完成兩步,注冊加登陸

五、小結

以上基本就能實現登陸,注冊,驗證碼登陸,三方登陸,一綁多的需求。朋友們在看的時候,有什么問題可以隨時評論。謝謝大家。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM