黑馬部落格——詳細步驟(二)專案功能的實現之登入功能

qq_40794986發表於2020-12-29

2. 專案功能實現
2.1 登入


1. 建立使用者集合,初始化使用者
              1.    連線資料庫
              2.    建立使用者集合
              3.    初始化使用者
 

連線資料庫:

建立使用者集合:

 

初始化使用者

 

刪除或註釋掉測試程式碼:

 

 

2. 為登入表單項設定請求地址、請求方式以及表單項name屬性

3. 當使用者點選登入按鈕時,客戶端驗證使用者是否填寫了登入表單

4. 如果其中一項沒有輸入,阻止表單提交

 

5. 伺服器端接收請求引數,驗證使用者是否填寫了登入表單

下載好第三方模組後重新啟動伺服器

 

設定google禁止使用js程式碼

高階設定->內容設定->JavaScript 選擇禁止

6. 如果其中一項沒有輸入,為客戶端做出響應,阻止程式向下執行

美化錯誤頁面:

       使用錯誤頁面模板

優化頁面:錯誤頁面三秒後返回登入頁面

 

7. 根據郵箱地址查詢使用者資訊

 

8. 如果使用者不存在,為客戶端做出響應,阻止程式向下執行

9. 如果使用者存在,將使用者名稱和密碼進行比對

 

10. 比對成功,使用者登入成功

11. 比對失敗,使用者登入失敗

12. 密碼加密處理 bcrypt

雜湊加密是單程加密方式:1234=>abcd

只能加密,不能解密

在加密的密碼中加入隨機字串可以增加密碼被破解的難度。

 

bcrypt依賴的其他環境

1.安裝python 並把python設定到環境變數中

2.node-gyp

npm install node-gyp -g

3.windows-build-tools

Python 2版本:npm install --global --production windows-build-tools

Python其它版本:https://blog.csdn.net/weixin_43848802/article/details/105113616

測試第三方模組bcrypt能否使用

在專案中使用第三方模組bcrypt

比對密碼:

 

13. 儲存登入狀態

成功登入後

表明沒有儲存登入狀態(http協議的無狀態性)

儲存登入狀態需要技術:cookie與session

cookie與session

cookie:瀏覽器在電腦硬碟中開闢的一塊空間,主要供伺服器端儲存資料。

  1. cookie中的資料是以域名的形式進行區分的。
  2. cookie中的資料是有過期時間的,超過時間資料會被瀏覽器自動刪除。
  3. cookie中的資料會隨著請求被自動傳送到伺服器端。

session:實際上就是一個物件,儲存在伺服器端的記憶體中,在session物件中也可以儲存多條資料,每一條資料都有一個sessionid做為唯一標識。

在node.js中需要藉助express-session實現session功能。

npm install express-session

成功登入後

成功登入後

登入後跳轉使用者列表頁面(重定向)

成功登入後

 

14.登入攔截(設定未登入不能檢視user頁面等)

驗證:未登入狀態下訪問http://localhost/admin/user 會跳轉到登入介面

 

15.將功能模組分離

(1)分離登入刷選功能模組:

驗證:未登入狀態下訪問http://localhost/admin/user 會跳轉到登入介面

(2)分離登入功能模組:

 

簡化

驗證登入功能能否正常執行

以同樣的方式處理其它功能

 

 

 

 

 

相關文章