NodeJs登錄實現


一. 使用插件

1. NodeJs自帶的加密插件:crypto

文檔:https://nodejs.org/api/crypto.html

可以用來將用戶密碼加密再存入數據庫

// 隨機生成加密token的密匙,用於jwt加密密匙
let tokenSecret = crypto.randomBytes(16).toString('hex'),

 

2. 用於生成token的插件:jwt-simple

文檔:https://www.npmjs.com/package/jwt-simple

// 此方式當密鑰不對會解碼失敗得到的值為undefined,可以判斷前端傳來的token是無效的
try {
    var decoded = jwt.decode(token, tokenSecret);
} catch (error) {
    console.log(error); //=> 輸出:Signature verification failed
}
console.log(decoded); //=> 輸出:用戶信息 或者 undefined

 

二. 注冊流程

1.  獲得用戶uid,可以直接使用賬號名,但是要保證唯一性。用戶密碼需要加密之后再存入數據庫

2.  生成新的token(token含用戶id加上密鑰通過加密算法生成)

3.  查詢數據庫是否已經存在此用戶,如果已存在通知前端告知用戶已注冊

4. 否則將用戶信息,加密密碼,token,token過期時間存入數據庫

 

三. 登錄流程

1.  獲得用戶uid,用戶密碼

2.  生成新的token(token含用戶id加上密鑰通過加密算法生成)

3.  通過uid和密碼查詢數據庫,如果找不到匹配的說明密碼或者用戶名錯了,告訴前端提示用戶

4. 否則找到匹配用戶了,之后更新數據庫token和token過期時間

5. 通過更新數據庫的token返回結果通知用戶是否登錄成功

 

四. 驗證token流程(方式很多,可以在生成token和設置token過期時間有諸多選擇)

// 我采用生成的token密匙固定,token包含用戶uid,token不重新登錄永不過期,這樣就不用判斷token過期時間了
// token驗證通過上面的jwt.decode此方式可以不用查詢用戶數據庫(也是token存在的意義)

1. 通過前端傳上來的token使用密鑰進行解碼,解碼失敗token無效,通知用戶重新登錄

2. 解碼成功,查詢數據庫此用戶信息

3. 判斷token是否過期,過期驗證失效

4. 沒過期token驗證成功

 


免責聲明!

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



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