iOS開發之登錄註冊系統
一、登錄的種類劃分:
1、 普通登錄
2、使用獨立系統的登錄
3、單點登錄
4、 Oauth2.0登錄
詳細介紹如下:
1、普通登錄:
普通的登錄需求,要的就是一個登錄頁面,輸入賬號密碼,提交Form表單,後端查詢數據庫對應用戶名的hash密碼,匹配正確則把用戶記錄到Session,不正確則返回錯誤。
密碼hash: 就是存進數據庫的密碼是一串密文,密文是明文密碼通過不可逆算法得出的。
Session的原理:其實就是依賴了Cookie,通過Cookie記錄用戶憑證。
2、使用獨立系統的登錄:
為避免token被竊取,被無限登錄網站系統。用戶輸入賬號密碼登錄成功之後,passport會通過帶著一個可逆加密的包含用戶信息的token,重定向到www.xxx.com提供的回調處理地址,然後進行解密,匹配正確,則登錄用戶。要註意的是,這裏的加密的信息需要包含一個時間戳,接收方需要認證這個時間戳,過期登錄失敗。
3、單點登錄:
單點登錄SSO(Single Sign On),需要實現的需求其實就是在站點A的登錄了,那麽用戶就自動可在站點B、站點C、站點E、F、G登錄。
三種實現方式如下:
<1>使用Cookie作為憑證媒介的方式
就是使用cookie作為媒介,存放用戶憑證。用戶登錄父應用之後,應用返回一個加密的cookie,當用戶訪問子應用的時候,攜帶上這個cookie,授權應用解密cookie並進行校驗,校驗通過則登錄當前用戶。
<2>通過JSONP的方式
用戶在父應用中登錄後,跟Session匹配的Cookie會存到客戶端中,當用戶需要登錄子應用的時候,授權應用訪問父應用提供的JSONP接口,並在請求中帶上父應用域名下的Cookie,父應用接收到請求,驗證用戶的登錄狀態,返回加密的信息,子應用通過解析返回來的加密信息來驗證用戶,如果通過驗證則登錄用戶。
<3>通過頁面重定向的方式
就是通過父應用和子應用來回重定向中進行通信,實現信息的安全傳遞。父應用提供一個GET方式的登錄接口,用戶通過子應用重定向連接的方式訪問這個接口,如果用戶還沒有登錄,則返回一個的登錄頁面,用戶輸入賬號密碼進行登錄。如果用戶已經登錄了,則生成加密的Token,並且重定向到子應用提供的驗證Token的接口,通過解密和校驗之後,子應用登錄當前用戶。
4、OAuth2.0登錄:
現在很多App都使用第三方登錄,比如:「微信登錄」、「微博登錄」、「QQ登錄」,其實第三方登錄都是實現了OAuth2.0協議,第三方提供一個登錄入口,也就是第三方域名下的登錄頁面。主站需要登錄的時候,引導用戶重定向到第三方的登錄頁面,用戶輸入賬號密碼之後,登錄第三方系統,第三方系統匹配帳號成功之後,帶上一個code到主站的回調地址,主站接收到code,短時間內拿著code請求第三方提供獲取長期憑證的接口(因為code有一個比較短的過期時間),這個長期憑證叫access_token,獲取之後就把這個access_token存到數據庫中,請求一些第三方提供的API,需要用到這個access_token,因為這個token就是記錄用戶在第三方系統的一個身份憑證。一些系統,在獲取access_token的時候,還會返回一個副參數refresh_token,因為access_token是有過期時間的,一旦過期了,主站可以使用refresh_token請求第三方提供的接口獲取新的access_token以及新的refresh_token。
二、登錄的幾種方式:
1、賬號(手機號/郵箱/用戶名)+密碼登錄
2、手機號+驗證碼登錄
3、第三方登錄
三、登錄流程的種類:
1、 需要登錄後才能繼續使用產品功能服務
2、不需要首先登錄可以使用產品或者產品的部分功能
四、註冊的幾種方式:
1、 郵箱註冊
2、手機號註冊
3、用戶名註冊
4、第三方註冊
五、註冊流程的種類:
1、同一頁面中完成註冊
2、按步驟分頁面完成註冊
六、登錄、註冊的註意事項:
1、 郵箱/手機號的占用判斷
2、 郵箱/手機號的合法性判斷
3、 登錄密碼的機制
4、 是否需要要確認密碼
5、 是否需要驗證碼
6、 驗證碼的重發機制
7、 登錄註冊過程中的異常狀態
8、 註冊完/登錄完一定要直接切回需要登錄的流程節點
七、登錄、註冊的層級劃分:
1、 用戶層面,面對的目標用戶群不同,對應的登錄註冊的方式也不同。
2、功能層面,就是確保整個登錄註冊模塊邏輯的合理性以及流程的通暢性。
3、 業務層面,不同的業務邏輯,需要的登錄註冊的方式、流程也不同;不同的功能模塊,對登錄節點的需求也不同。
4、產品層面,不同的產品類型,對登錄註冊模塊的需求不同。
iOS開發之登錄註冊系統