註冊 登入 實現過程詳解

2021-10-02 08:45:28 字數 1146 閱讀 2228

一般的平台基本上都有使用者管理這一部分,雖然我們都是各個平台的使用者,對於一般的流程有所了解,看似簡單,但是真正實現的過程中確遇到了很多的困難。

看似過程似乎很簡單但是這過程還有很多需要考慮的因素,採取郵箱傳送驗證碼的方式實現驗證:

驗證碼如何產生:

通常我們的驗證碼是0-9中的六個或者四個數字,因此需要迴圈產生四個或者六個隨機數字。python版可參考:使用flask傳送郵件

驗證碼儲存到**?如何設定驗證碼的有效期?

驗證碼和使用者郵箱是需要繫結儲存到資料庫用來後端驗證的,而驗證碼是有有效期的,因此採用redis來儲存更為方便,在set資料時直接設定資料的有效期。當然也可以通過mysql來實現。只是稍微繁瑣些,但註冊成功後的使用者資料一般都是儲存在mysql中。

驗證成功後,為了保證安全,使用者名稱和密碼等需要加密後儲存到資料庫

那麼如何加密呢?加密演算法有很多(對稱、非對稱、線性雜湊演算法等),而使用者的密碼等資訊是對安全度要求很高的資訊,因此採用了sha-1(線性雜湊加密的一種)加密。

通常有些介面的訪問都是有許可權的,那麼如何進行驗證呢?

驗證方式通常有cookie、session、token、jwt等,和加密方式一樣,需要根據不同情況進行選擇,在前後端分離中使用了jwt(json web token),jwt使用公鑰簽名生成並儲存到使用者本地,減少了查詢伺服器的壓力。

既然前端訪問介面時需要攜帶jwt,那麼jwt字串儲存在**呢?

因為每次訪問某些介面時都需要攜帶jwt字串,那麼儲存在**也是個問題,可以考慮的方式包括:cookie等(可根據場景選擇),我選擇的方式是localstrong方式來儲存。

注:各種加密演算法的選擇與對比、驗證方式選擇、jwt儲存方式對比等仍需另外寫部落格完善。

登入介面註冊儲存過程

alter procedure dbo procregister loginid varchar 50 傳入引數 登入帳號 loginpwd varchar 15 傳入引數 登入密碼 asdeclare emailaddress varchar 20 預設郵箱字尾,以方便註冊 set emailad...

MySQL NodeJs實現註冊登入

之前寫過乙個沒有連線資料庫的註冊與登陸的實現,這次加上了資料庫 剛剛接觸後端,很多不完善的地方,有錯誤請指正 nodejs中mysql的寫法 連線池 let db mysql.createpool db.query sql語句 err,data 並且在資料庫中儲存的密碼應該是密文 function ...

php mysql apache實現登入註冊系統

1 在雲伺服器上搭建伺服器,推薦使用寶塔整合 2 在本地windows搭建,推薦自己採用分開安裝,這樣可以更好的配置自己的需求 1 採用form表單編寫登入註冊頁面 2 也可以form表單配合 ajax 實現表單提交 演示 login register.html style.css 鬼泣 wel e...