真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

nodejs中的jwt是什么

這篇文章主要講解了“nodejs中的jwt是什么”,文中的講解內(nèi)容簡單清晰,易于學(xué)習(xí)與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學(xué)習(xí)“nodejs中的jwt是什么”吧!

創(chuàng)新互聯(lián)是一家專業(yè)提供秦州企業(yè)網(wǎng)站建設(shè),專注與成都網(wǎng)站制作、網(wǎng)站建設(shè)、H5開發(fā)、小程序制作等業(yè)務(wù)。10年已為秦州眾多企業(yè)、政府機構(gòu)等服務(wù)。創(chuàng)新互聯(lián)專業(yè)網(wǎng)站制作公司優(yōu)惠進行中。

在nodejs中,jwt全稱Json web token,是為了在網(wǎng)絡(luò)應(yīng)用環(huán)境間傳遞聲明而執(zhí)行的一種基于JSON的開放標準。JWT的聲明一般被用來在身份提供者和服務(wù)提供者間傳遞被認證的用戶身份信息,以便于從資源服務(wù)器獲取資源。

nodejs中的jwt是什么

本教程操作環(huán)境:windows7系統(tǒng)、nodejs 12.19.0版,DELL G3電腦。

nodejs中什么是JWT

Json web token (JWT), 是為了在網(wǎng)絡(luò)應(yīng)用環(huán)境間傳遞聲明而執(zhí)行的一種基于JSON的開放標準((RFC 7519).該token被設(shè)計為緊湊且安全的,特別適用于分布式站點的單點登錄(SSO)場景。

JWT的聲明一般被用來在身份提供者和服務(wù)提供者間傳遞被認證的用戶身份信息,以便于從資源服務(wù)器獲取資源,也可以增加一些額外的其它業(yè)務(wù)邏輯所必須的聲明信息,該token也可直接被用于認證,也可被加密。

JWT,在HTTP通信過程中,進行身份認證。

我們知道HTTP通信是無狀態(tài)的,因此客戶端的請求到了服務(wù)端處理完之后是無法返回給原來的客戶端。因此需要對訪問的客戶端進行識別,常用的做法是通過session機制:客戶端在服務(wù)端登陸成功之后,服務(wù)端會生成一個sessionID,返回給客戶端,客戶端將sessionID保存到cookie中,再次發(fā)起請求的時候,攜帶cookie中的sessionID到服務(wù)端,服務(wù)端會緩存該session(會話),當(dāng)客戶端請求到來的時候,服務(wù)端就知道是哪個用戶的請求,并將處理的結(jié)果返回給客戶端,完成通信。

通過上面的分析,可以知道session存在以下問題:

1、session保存在服務(wù)端,當(dāng)客戶訪問量增加時,服務(wù)端就需要存儲大量的session會話,對服務(wù)器有很大的考驗;

2、當(dāng)服務(wù)端為集群時,用戶登陸其中一臺服務(wù)器,會將session保存到該服務(wù)器的內(nèi)存中,但是當(dāng)用戶的訪問到其他服務(wù)器時,會無法訪問,通常采用緩存一致性技術(shù)來保證可以共享,或者采用第三方緩存來保存session,不方便。

Json Web Token是怎么做的?

1、客戶端通過用戶名和密碼登錄服務(wù)器;

2、服務(wù)端對客戶端身份進行驗證;

3、服務(wù)端對該用戶生成Token,返回給客戶端;

4、客戶端將Token保存到本地瀏覽器,一般保存到cookie中;

5、客戶端發(fā)起請求,需要攜帶該Token;

6、服務(wù)端收到請求后,首先驗證Token,之后返回數(shù)據(jù)。

服務(wù)端不需要保存Token,只需要對Token中攜帶的信息進行驗證即可;

無論客戶端訪問后臺的那臺服務(wù)器,只要可以通過用戶信息的驗證即可。

Json Web Token長什么樣子呢?

通過名字就可以看出來,是一個json。

由三部分內(nèi)容組成:

頭(header),一般很少改動直接使用默認的即可:

{
 ‘typ’:‘JWT’,
 ‘a(chǎn)lg’:‘HS256’
 }

(playload),東西都裝在這里,默認的內(nèi)容有:

{
 ‘iss’:‘簽發(fā)者’,
 ‘sub’:‘面向的用戶’,
 ‘a(chǎn)ud’:‘接收方’,
 ‘exp’: 過期時間,
 ‘iat’: 創(chuàng)建時間,
 ‘nbf’: 在什么時間之前,該Token不可用,
 ‘jti’:‘Token唯一標識’
 }

根據(jù)需要用戶可以自己定義,Token中傳輸?shù)膬?nèi)容,一般會將用戶名,角色等信息放到Token中。

(signature),前面兩部分轉(zhuǎn)為字符串后,使用base64編碼,然后進行加密得到一個字符串。

Token = header(base64)+ playload(base64)+ signature;

nodejs中的jwt是什么

實現(xiàn)流程

–>用戶登錄,服務(wù)器產(chǎn)生一個token(加密字符串)發(fā)送給前端,

–>前端將token保存(想存哪就存哪)

–>前端發(fā)起數(shù)據(jù)請求時攜帶token

–>服務(wù)端驗證token是否合法,合法繼續(xù)操作,不合法終止操作

token的使用場景:無狀態(tài)請求,保持用戶的登錄狀態(tài),第三方登錄(token+auth3.0)

支持算法

alg參數(shù)值數(shù)字簽名或MAC算法
HS256使用SHA-256哈希算法的HMAC
HS384使用SHA-384哈希算法的HMAC
HS512使用SHA-512哈希算法的HMAC
RS256使用SHA-256哈希算法的RSASSA-PKCS1-v1_5
RS384使用SHA-384哈希算法的RSASSA-PKCS1-v1_5
RS512使用SHA-512哈希算法的RSASSA-PKCS1-v1_5
PS256使用SHA-256哈希算法的RSASSA-PSS(僅節(jié)點^ 6.12.0 OR> = 8.0.0)
PS384使用SHA-384哈希算法的RSASSA-PSS(僅節(jié)點^ 6.12.0 OR> = 8.0.0)
PS512使用SHA-512哈希算法的RSASSA-PSS(僅節(jié)點^ 6.12.0 OR> = 8.0.0)
ES256使用P-256曲線和SHA-256哈希算法的ECDSA
ES384使用P-384曲線和SHA-384哈希算法的ECDSA
ES512使用P-521曲線和SHA-512哈希算法的ECDSA
沒有不包含數(shù)字簽名或MAC值

開發(fā)時使用

安裝

npm install jsonwebtoken --save

使用

const jwt = require('jsonwebtoken');//加載包
//產(chǎn)生token默認算法hs256
let token=jwt.sign({user:'123'},'123114655sad46aa');//此方法接收兩個參數(shù),第一個是要加密保存的數(shù)據(jù)(一個對象,不要放隱秘性的數(shù)據(jù),如密碼),第二個是要加密的私鑰(一個字符串,越亂越好)
console.log(token);//返回一個加密字符串
// 服務(wù)器簽發(fā)的token
//eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VyIjoiMTIzIiwiaWF0IjoxNTcwMDc2NjU5fQ.3FT6v8zVptdWGBILD1m1CRY6sCP1I3E947krUh_E3



//客戶端請求數(shù)據(jù)的時候驗證token
//客戶端傳遞過來的token
let tokens=token;

jwt.verify(tokens,'123114655sad46aa',function (err,data) {
    //verify接收兩個參數(shù),第一個參數(shù)是客戶端傳遞過來的token,第二個參數(shù)是加密時的私鑰;第三個參數(shù)是回調(diào)函數(shù)
    console.log(err);//簽名通過返回null,簽名不通過返回err(JsonWebTokenError: invalid signature)	
    console.log(data);//	通過返回解密數(shù)據(jù),失敗返回unfinished
});

感謝各位的閱讀,以上就是“nodejs中的jwt是什么”的內(nèi)容了,經(jīng)過本文的學(xué)習(xí)后,相信大家對nodejs中的jwt是什么這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是創(chuàng)新互聯(lián),小編將為大家推送更多相關(guān)知識點的文章,歡迎關(guān)注!


分享題目:nodejs中的jwt是什么
本文鏈接:http://weahome.cn/article/jddghi.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部