標籤:記錄 系統 校正 cookie 註冊系統 返回 oauth2.0 成功 完成
一、登入的種類劃分:
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開發之登入註冊系統