如何在node.js中使用?JsonWebToken模塊進行token加密
一、token
1、什么是token
? ‘令牌’的意思,是一個字符串,在客戶端第一次請求服務(wù)器時由服務(wù)器生成,然后響應(yīng)給客戶端(保存),當(dāng)客戶端再次請求服務(wù)器時,帶上這個token,就不需要再帶用戶名和密碼。
2、作用
? (1)防止表單重復(fù)提交:
? (2)進行身份驗證:
? a、為什么要進行身份認證:基于http協(xié)議的請求,無狀態(tài)(當(dāng)客戶端與服務(wù)器之間的請求-響應(yīng)過程完成后,客戶端和服務(wù)器就斷開了聯(lián)系、服務(wù)器無法記錄或跟蹤客戶端)。當(dāng)客戶端再次向服務(wù)器發(fā)起請求的時候,服務(wù)器需要對客戶端的身份進行認證。
b、傳統(tǒng)的身份認證方式:
? cookie:在服務(wù)器端生成,保存在客戶端。
? session:在服務(wù)器端生成,保存在服務(wù)器端
? c、token認證:在服務(wù)器端不需要保存用戶的身份信息,流程如下:
? (a). 客戶端使用用戶名和密碼請求登錄。
? (b). 服務(wù)端收到請求,驗證用戶名和密碼。
? (c). 驗證成功后,服務(wù)端會生成一個token,然后把這個token發(fā)送給客戶端。
? (d). 客戶端收到token后把它存儲起來,可以放在cookie或者Local Storage(本地存儲)里。
? (e). 客戶端每次向服務(wù)端發(fā)送請求的時候都需要帶上服務(wù)端發(fā)給的token。
(f). 服務(wù)端收到請求,然后去驗證客戶端請求里面帶著token,如果驗證成功,就向客戶端
返回請求的數(shù)據(jù)。
? d、token的本質(zhì):
是對用戶的信息進行加密、解密,因此保存在客戶端的token是加密后的一個字符串
二、Express中實現(xiàn)token的方法:
1、使用JWT模塊:JsonWebToken
? JWT的函數(shù):
? sign(加密的數(shù)據(jù),加密的密鑰,其他參數(shù));返回值是一個加密后的字符串
? verify(token,加密的密鑰,[options]);驗證token,返回值是一個對象,加密數(shù)據(jù)的信息,包括有效期
? decode(token,加密的密鑰);解密的方法。返回值是一個對象,加密數(shù)據(jù)的信息,包括有效期
2、token驗證的流程
? (1)第一次向服務(wù)器發(fā)起登錄請求時,沒有token信息
? (2)當(dāng)用戶登錄后,在服務(wù)器端生成token(token中包含哪些信息由用戶決定),然后將token響應(yīng)給客戶端
? (3)當(dāng)客戶端接收到服務(wù)器端響應(yīng)的token后,將token存入本地的緩存中(如localStorage、cookie)
? (4)當(dāng)客戶端再次訪問服務(wù)器時,需要在請求頭中包含token;服務(wù)器在接收到客戶端的請求后,先查找客戶端的請求頭中是否有
? token,若沒有,則表明該用戶是非法用戶,就不響應(yīng)任何數(shù)據(jù);若有token,則表明該用戶是合法用戶,就響應(yīng)數(shù)據(jù)
3、Express中實現(xiàn)過程 ?
(1)安裝、導(dǎo)入JsonWebToken模塊 ?
(2)在登錄接口中生成token并響應(yīng)給客戶端
(3)在客戶端將接收到的token保存到本地緩存
? (4)當(dāng)客戶端再次訪問(包括未登錄的訪問——非法訪問)服務(wù)器,服務(wù)器端會對token進行驗證
(5)客戶端每次向服務(wù)器發(fā)起請求時都必須攜帶token,否則視為非法用戶
總結(jié)
到此這篇關(guān)于如何在node.js中使用?JsonWebToken模塊進行token加密的文章就介紹到這了,更多相關(guān)node.js進行token加密內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Nodejs探秘之深入理解單線程實現(xiàn)高并發(fā)原理
這篇文章主要介紹了Nodejs單線程實現(xiàn)高并發(fā)原理,對Node.js感興趣的同學(xué),可以參考下2021-04-04從零學(xué)習(xí)node.js之簡易的網(wǎng)絡(luò)爬蟲(四)
簡單的爬蟲實現(xiàn)原理很簡單:發(fā)送http請求至目標地址獲取HTML頁面數(shù)據(jù),然后從獲取來的頁面數(shù)據(jù)中提取需要的數(shù)據(jù)保存。下面這篇文章主要介紹了利用node.js實現(xiàn)簡易的網(wǎng)絡(luò)爬蟲的相關(guān)資料,需要的朋友可以參考下。2017-02-02