溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

怎么在node.js中使用?JsonWebToken模塊進(jìn)行token加密

發(fā)布時間:2023-03-17 13:52:25 來源:億速云 閱讀:143 作者:iii 欄目:開發(fā)技術(shù)

這篇文章主要講解了“怎么在node.js中使用JsonWebToken模塊進(jìn)行token加密”,文中的講解內(nèi)容簡單清晰,易于學(xué)習(xí)與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學(xué)習(xí)“怎么在node.js中使用JsonWebToken模塊進(jìn)行token加密”吧!

    一、token

    1、什么是token

    ‘令牌’的意思,是一個字符串,在客戶端第一次請求服務(wù)器時由服務(wù)器生成,然后響應(yīng)給客戶端(保存),當(dāng)客戶端再次請求服務(wù)器時,帶上這個token,就不需要再帶用戶名和密碼。

    2、作用

    (1)防止表單重復(fù)提交:

    (2)進(jìn)行身份驗(yàn)證:

    a、為什么要進(jìn)行身份認(rèn)證:基于http協(xié)議的請求,無狀態(tài)(當(dāng)客戶端與服務(wù)器之間的請求-響應(yīng)過程完成后,客戶端和服務(wù)器就斷開了聯(lián)系、服務(wù)器無法記錄或跟蹤客戶端)。當(dāng)客戶端再次向服務(wù)器發(fā)起請求的時候,服務(wù)器需要對客戶端的身份進(jìn)行認(rèn)證。

     b、傳統(tǒng)的身份認(rèn)證方式:

    cookie:在服務(wù)器端生成,保存在客戶端。

    session:在服務(wù)器端生成,保存在服務(wù)器端

    c、token認(rèn)證:在服務(wù)器端不需要保存用戶的身份信息,流程如下:

             (a). 客戶端使用用戶名和密碼請求登錄。

             (b). 服務(wù)端收到請求,驗(yàn)證用戶名和密碼。

            (c). 驗(yàn)證成功后,服務(wù)端會生成一個token,然后把這個token發(fā)送給客戶端。

             (d). 客戶端收到token后把它存儲起來,可以放在cookie或者Local Storage(本地存儲)里。

             (e). 客戶端每次向服務(wù)端發(fā)送請求的時候都需要帶上服務(wù)端發(fā)給的token。

            (f). 服務(wù)端收到請求,然后去驗(yàn)證客戶端請求里面帶著token,如果驗(yàn)證成功,就向客戶端

                    返回請求的數(shù)據(jù)。

    d、token的本質(zhì):

            是對用戶的信息進(jìn)行加密、解密,因此保存在客戶端的token是加密后的一個字符串

    二、Express中實(shí)現(xiàn)token的方法:

    1、使用JWT模塊:JsonWebToken

    JWT的函數(shù):

    sign(加密的數(shù)據(jù),加密的密鑰,其他參數(shù));返回值是一個加密后的字符串

    verify(token,加密的密鑰,[options]);驗(yàn)證token,返回值是一個對象,加密數(shù)據(jù)的信息,包括有效期

    decode(token,加密的密鑰);解密的方法。返回值是一個對象,加密數(shù)據(jù)的信息,包括有效期

    2、token驗(yàn)證的流程

    (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中實(shí)現(xiàn)過程

    (1)安裝、導(dǎo)入JsonWebToken模塊

    (2)在登錄接口中生成token并響應(yīng)給客戶端

    怎么在node.js中使用?JsonWebToken模塊進(jìn)行token加密

    (3)在客戶端將接收到的token保存到本地緩存

    怎么在node.js中使用?JsonWebToken模塊進(jìn)行token加密

    (4)當(dāng)客戶端再次訪問(包括未登錄的訪問——非法訪問)服務(wù)器,服務(wù)器端會對token進(jìn)行驗(yàn)證

    怎么在node.js中使用?JsonWebToken模塊進(jìn)行token加密

     (5)客戶端每次向服務(wù)器發(fā)起請求時都必須攜帶token,否則視為非法用戶  

    怎么在node.js中使用?JsonWebToken模塊進(jìn)行token加密

    感謝各位的閱讀,以上就是“怎么在node.js中使用JsonWebToken模塊進(jìn)行token加密”的內(nèi)容了,經(jīng)過本文的學(xué)習(xí)后,相信大家對怎么在node.js中使用JsonWebToken模塊進(jìn)行token加密這一問題有了更深刻的體會,具體使用情況還需要大家實(shí)踐驗(yàn)證。這里是億速云,小編將為大家推送更多相關(guān)知識點(diǎn)的文章,歡迎關(guān)注!

    向AI問一下細(xì)節(jié)

    免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

    AI