久久精品五月,日韩不卡视频在线观看,国产精品videossex久久发布 ,久久av综合

站長(zhǎng)資訊網(wǎng)
最全最豐富的資訊網(wǎng)站

從四個(gè)方面來(lái)看看 jwt 在node中的使用

nodejs中要怎么使用jwt?下面本篇文章就來(lái)給大家從四個(gè)方面介紹一下jwt的使用,希望對(duì)大家有所幫助!

從四個(gè)方面來(lái)看看 jwt 在node中的使用

導(dǎo)語(yǔ):由于http是無(wú)狀態(tài)的,請(qǐng)求響應(yīng)過(guò)程中不存儲(chǔ)記錄用戶身份信息,所以就出現(xiàn)了很多用戶識(shí)別存儲(chǔ)用戶身份的方法,比如cookie,session,jwt。我最近做的一個(gè)接口服務(wù)使用了jwt來(lái)存儲(chǔ)管理用戶信息,相較于本地cookie存儲(chǔ),服務(wù)器端session存儲(chǔ),jwt就變得比較安全和節(jié)省方便,本文就jwt在node服務(wù)中的使用方法做一個(gè)簡(jiǎn)單的總結(jié)。

目錄

  • jwt簡(jiǎn)介
  • 安裝配置
  • 封裝方法
  • 實(shí)戰(zhàn)練習(xí)

本文從以上四個(gè)方面介紹jwt的使用。

jwt簡(jiǎn)介

概念

JWT全稱JSON Web Token,它是一種開(kāi)放標(biāo)準(zhǔn)RFC 7519,定義了一種緊湊且自包含的方式,用于在各方之間作為JSON對(duì)象安全地傳輸信息。JWT可以使用密鑰或使用RSA或ECDSA的公鑰/私鑰對(duì)進(jìn)行簽名,可以對(duì)簽名進(jìn)行驗(yàn)證。

組成部分

jwt簽名令牌一般由三部分組成,分別是Header(頭部信息),Payload(載荷),Signature(簽名),例如xxxxx.yyyyy.zzzzz

  • header

一般是存儲(chǔ)令牌的類型和簽名算法,比如:

{   "alg": "HS256",   "typ": "JWT" }
  • Payload

一般是存儲(chǔ)聲明,也就是用戶信息和附件數(shù)據(jù),分為注冊(cè)聲明、公共聲明和私人聲明。

比如:

{   "sub": "1234567890",   "name": "John Doe",   "admin": true }
  • 簽名

利用簽名算法對(duì)Header和Payload進(jìn)行簽名

比如:

HMACSHA256(   base64UrlEncode(header) + "." +   base64UrlEncode(payload),   secret)

那么一個(gè)標(biāo)準(zhǔn)的jwt簽名令牌會(huì)是這樣的eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c

應(yīng)用場(chǎng)景

  • 用戶授權(quán)訪問(wèn)

比如用戶登錄后,服務(wù)端下發(fā)一個(gè)jwt令牌給客戶端,每次用戶請(qǐng)求數(shù)據(jù)都在請(qǐng)求頭里面攜帶此令牌,服務(wù)端驗(yàn)證通過(guò)后可以獲取到數(shù)據(jù),這種方式開(kāi)銷很小,并不需要服務(wù)端進(jìn)行存儲(chǔ),而且還可以跨域使用。

  • 信息交換

在各方之間存儲(chǔ)加密信息,驗(yàn)證簽名內(nèi)容是否篡改。

安全性

由于令牌可以被拆解,里面的header和Payload可以被解析看到,所以盡量不要在Payload里面存儲(chǔ)一些私密的信息。

安裝配置

下面就在node中使用jwt做一下操作。

在npm網(wǎng)站,有很多的jwt包,你可以選擇你認(rèn)為合適的。

搜索jwt

NAME                      | DESCRIPTION          | AUTHOR          | DATE       | VERSION  | KEYWORDS jwt                       | JSON Web Token for…  | =mattrobenolt   | 2012-05-05 | 0.2.0    | express-jwt               | JWT authentication…  | =woloski…       | 2021-08-11 | 6.1.0    | auth authn authentication authz authorization http jwt token oauth express jsonwebtoken              | JSON Web Token…      | =dschenkelman…  | 2019-03-18 | 8.5.1    | jwt jwt-decode                | Decode JWT tokens,…  | =jeff.shuman…   | 2020-11-16 | 3.1.2    | jwt browser passport-jwt              | Passport…            | =themikenichol… | 2018-03-13 | 4.0.0    | Passport Strategy JSON Web Token JWT koa-jwt                   | Koa middleware for…  | =stiang…        | 2021-09-24 | 4.0.3    | auth authn authentication authz authorization http jwt json middleware token oauth permissions koa jsrsasign                 | opensource free…     | =kjur           | 2021-12-01 | 10.5.1   | crypto cryptography Cipher RSA ECDSA DSA RSAPSS PKCS#1 PKCS#5 PKCS#8 private key public key CSR PKCS#10 hash function HMac ASN.1 certexpress-jwt-permissions   | Express middleware…  | =angryunicorn…  | 2021-08-18 | 1.3.6    | express middleware JWT permissions authorization token security njwt                      | JWT Library for…     | =robertjd       | 2021-12-03 | 1.2.0    | jwt fastify-jwt               | JWT utils for…       | =starptech…     | 2021-12-03 | 4.1.0    | jwt json token jsonwebtoken fastify did-jwt                   | Library for Signing… | =simonas-notcat… | 2021-12-03 | 5.12.1   |  hapi-auth-jwt2            | Hapi.js…             | =nelsonic       | 2020-09-08 | 10.2.0   | Hapi.js Authentication Auth JSON Web Tokens JWT auth0-lock                | Auth0 Lock           | =jeff.shuman…   | 2021-11-02 | 11.31.1  | auth0 auth openid authentication passwordless browser jwt jwks-rsa                  | Library to retrieve… | =jeff.shuman…   | 2021-10-15 | 2.0.5    | jwks rsa jwt restify-jwt-community     | JWT authentication…  | =frbuceta       | 2021-12-05 | 1.1.21   | auth authentication authorization http jwt token oauth restify did-jwt-vc                | Create and verify…   | =simonas-notcat… | 2021-11-23 | 2.1.8    |  jwt-service               | A simple wrapper…    | =nfroidure      | 2021-11-01 | 8.0.0    | jwt knifecycle angular-jwt               | Library to help you… | =jeff.shuman…   | 2019-03-20 | 0.1.11   | @thream/socketio-jwt      | Authenticate…        | =divlo          | 2021-07-23 | 2.1.1    | socket socket.io jwt appstore-connect-jwt-gene | [![NPM](https://nod… | =poad           | 2021-10-15 | 1.0.1    | jwt appstore rator-core                |

安裝jwt

我個(gè)人覺(jué)得這個(gè)jsonwebtoken很不錯(cuò),本文就使用這個(gè)包。

npm i jsonwebtoken

常見(jiàn)用法

  • 簽名

簽名語(yǔ)法jwt.sign(payload, secretOrPrivateKey, [options, callback])

例如:

// 一般簽名 var jwt = require('jsonwebtoken'); var token = jwt.sign({ foo: 'bar' }, 'secret');  //  加私鑰簽名 var privateKey = fs.readFileSync('private.key'); var token = jwt.sign({ foo: 'bar' }, privateKey, { algorithm: 'RS256'});  // 設(shè)置過(guò)期時(shí)間 jwt.sign({   data: 'bar' }, 'secret', { expiresIn: 60 * 60 }); // 1h
  • 驗(yàn)證

驗(yàn)證語(yǔ)法jwt.verify(token, secretOrPublicKey, [options, callback])

例如:

// 一般驗(yàn)證 var decoded = jwt.verify(token, 'secret'); console.log(decoded.foo) // bar  // 公鑰驗(yàn)證 var cert = fs.readFileSync('public.pem'); jwt.verify(token, cert, function(err, decoded) {   console.log(decoded.foo) // bar });
  • 解碼

解碼語(yǔ)法jwt.decode(token [, options])

例如:

var decoded = jwt.decode(token, {complete: true}); console.log(decoded.header); console.log(decoded.payload);

封裝方法

根據(jù)安裝配置里面的方法,可以根據(jù)自己的需要進(jìn)行二次封裝,更加適合自己的方法。

  • 引入依賴包和配置
const jwt = require("jsonwebtoken"); const config = {     secret: '2021123456**',     time: 60 * 60, }
  • 簽名
function create (data, time) {   let token = jwt.sign(data, config.secret, {     algorithm: "HS256",     expiresIn: time || config.time,   })   return token; }
  • 驗(yàn)證
function verify (token) {   return jwt.verify(token, config.secret, function (err, decoded) {     if (err) {       return {         code: 1,         msg: 'invalid',         data: null,       }     } else {       return {         code: 2,         msg: 'valid',         data: decoded,       }     }   }) }
  • 解碼
function decoded (token, complete = true) {   return jwt.decode(token, {     complete,   }); }

上面是比較簡(jiǎn)單的方法,如果你還想使用公鑰私鑰,可以用上面安裝配置里面介紹的那樣。

實(shí)戰(zhàn)練習(xí)

經(jīng)過(guò)上面的封裝方法,可以來(lái)實(shí)戰(zhàn)演練一下,是否有效。

  • 新建一個(gè)文件夾test,新建一個(gè)文件index.js用于存放測(cè)試案例,jwt.js用于存儲(chǔ)調(diào)用方法。
mkdir test cd test npm init -y npm i jsonwebtoken
  • jwt方法
// jwt.js const jwt = require('jsonwebtoken'); const config = {     secret: '2021123456', // 密鑰     time: 60*60, // 過(guò)期時(shí)間 }  // 創(chuàng)建簽名令牌 function create (data, time) {     let token = jwt.sign(data, config.secret, {         algorithm: 'HS256',         expiresIn: time || config.time,     });     return token; }  // 驗(yàn)證令牌 function verify (token) {     return jwt.verify(token, config.secret, function (err, decoded) {       if (err) {         return {           code: 1,           msg: 'invalid',           data: null,         }       } else {         return {           code: 2,           msg: 'valid',           data: decoded,         }       }     }) }  // 解碼令牌 function decoded (token, complete = true) {     return jwt.decode(token, {       complete,     }); }  const token = {     create,     verify,     decoded, }  module.exports = token;
  • 創(chuàng)建token,驗(yàn)證token,解碼token
// index.js const jwt = require('./jwt');  // 生成令牌 let token = jwt.create({'id': 1, 'name': 'mark'}, 60*60*2); console.log(token);   /* eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9. eyJpZCI6MSwibmFtZSI6Im1hcmsiLCJpYXQiOjE2MzkxMDYyNzMsImV4cCI6MTYzOTExMzQ3M30. 20O1r0NVMf-j-9RwNcgls9ja0n1rGqSKN51_cRcvpE8 */  // 驗(yàn)證令牌 let verifyRes = jwt.verify(token); console.log(verifyRes);   /*  {     code: 2,     msg: 'valid',     data: { id: 1, name: 'mark', iat: 1639106273, exp: 1639113473 } } */  // 解碼令牌 let deRes = jwt.decoded(token, true); console.log(deRes);  /* {   header: { alg: 'HS256', typ: 'JWT' },   payload: { id: 1, name: 'mark', iat: 1639106273, exp: 1639113473 },   signature: '20O1r0NVMf-j-9RwNcgls9ja0n1rGqSKN51_cRcvpE8' } */

運(yùn)行一下命令node index.js測(cè)試是否正確。

好了,

贊(0)
分享到: 更多 (0)
?
網(wǎng)站地圖   滬ICP備18035694號(hào)-2    滬公網(wǎng)安備31011702889846號(hào)
久久精品五月,日韩不卡视频在线观看,国产精品videossex久久发布 ,久久av综合
理论片午夜视频在线观看| 国产精品流白浆在线观看| 黑丝一区二区三区| 麻豆9191精品国产| 国产欧美二区| 日韩欧美一区二区三区免费观看| 九色porny丨国产首页在线| 国产精品天天看天天狠| 国内精品亚洲| 久久高清精品| 久久国产精品久久w女人spa| 亚洲欧美一级| 国产精品久久| 国产a久久精品一区二区三区| 青青青免费在线视频| 欧美一区二区三区激情视频| 欧美特黄一区| 日韩欧美高清一区二区三区| 亚洲精品观看| 少妇精品久久久一区二区| 激情中国色综合| 欧美精选视频一区二区| 亚洲精品三级| 少妇高潮一区二区三区99| 一区免费视频| 青青国产精品| 亚洲风情在线资源| 99视频一区| 欧美中文一区二区| 日本欧洲一区二区| 日韩av免费大片| 日韩精品久久久久久| 丝袜美腿诱惑一区二区三区| 青青青国产精品| 欧美日韩中文字幕一区二区三区 | 国户精品久久久久久久久久久不卡| 日韩三级久久| 亚洲va在线| 国产美女精品视频免费播放软件| 免费精品国产| 精品国产乱码久久久久久樱花| 免费在线观看视频一区| 成人一区而且| 国产亚洲电影| 亚洲永久字幕| 欧美gv在线| 国产精品15p| 免费在线看一区| 国产一区日韩一区| av在线最新| 国产日韩欧美中文在线| 91久久亚洲| 久久国产中文字幕| 久久久久久色| 蜜臀av性久久久久蜜臀aⅴ流畅| 视频在线不卡免费观看| 欧美亚洲一级| 亚洲色图网站| 亚洲成人精选| 国产日韩欧美三区| 日韩视频一区| 97精品国产| 日韩动漫一区| 国产专区一区| 精品在线网站观看| 99日韩精品| 91一区二区三区四区| 日韩二区三区在线观看| 欧美日韩国产高清电影| 久久不卡日韩美女| 日韩中文字幕不卡| 香蕉久久久久久| 久久九九精品| 高清av不卡| 日韩福利一区| 亚洲三级欧美| 久久久久免费av| 先锋影音国产一区| 日韩高清中文字幕一区二区| 欧美黑人做爰爽爽爽| 丝袜美腿亚洲色图| 天堂久久av| 久久精品av| 久久久久美女| 欧美中文字幕一区二区| 不卡中文一二三区| 在线一区电影| 国产视频一区在线观看一区免费| 99成人在线| 西西人体一区二区| 蜜臀av一区二区三区| 亚洲综合中文| 97久久超碰| 国产精品久久久久久久久久白浆| 国产精品一级| 国产精品一区二区三区www| 国产另类在线| 欧美国产精品| 国产精品久久久久久久久久10秀 | 欧美专区在线| 亚洲开心激情| 日本欧美一区二区| 国产欧美亚洲一区| 麻豆国产欧美日韩综合精品二区| 欧美激情麻豆| av在线最新| 99久精品视频在线观看视频| 日韩免费久久| 红桃视频国产一区| 日韩一区欧美二区| 日韩视频一二区| 久久不见久久见免费视频7| 久久av一区| 日韩1区2区| 97精品一区二区| 成人欧美一区二区三区的电影| 成人午夜网址| 日韩美女一区二区三区在线观看| 日韩理论视频| 久久精品国产大片免费观看| 亚洲网站视频| 亚洲一区成人| 日韩视频一区| 亚洲一二三区视频| 亚洲精品极品| 国产伊人久久| 成人午夜毛片| 欧美高清一区| 午夜久久av| 精品国产黄a∨片高清在线| 欧洲亚洲一区二区三区| 婷婷综合六月| 亚洲播播91| 黄色成人91| 日韩精品一区第一页| 日本中文字幕不卡| 2023国产精品久久久精品双| 日韩一区三区| 蜜桃一区二区三区在线| 国产极品一区| 2023国产精品久久久精品双| 欧美性www| 天堂日韩电影| 日韩毛片网站| 在线天堂中文资源最新版| 香蕉久久国产| 精品一区二区三区亚洲| 日韩亚洲精品在线| 国产精品免费99久久久| 亚洲高清激情| 国产精品久久久久久久免费软件| 亚洲v在线看| 综合色就爱涩涩涩综合婷婷| 国产中文欧美日韩在线| 亚洲欧美视频一区二区三区| 久久精品国产福利| 99日韩精品| 精品一二三区| 日本欧美在线看| 欧美好骚综合网| 日韩一区二区三区精品| 蜜桃精品在线| 7m精品国产导航在线| 久久久久久久久丰满| 日本欧美一区二区| 99久久亚洲精品蜜臀| 国产日韩视频在线| 欧美成人午夜| 国产一区调教| 日韩国产精品久久久| 精品中文一区| 岛国精品一区| 日韩精品成人| 亚洲国产一区二区三区在线播放| 欧美精品影院| 蜜桃精品在线| 日韩精品久久久久久久软件91| 国产精品福利在线观看播放| 在线亚洲一区| 精品一区二区三区四区五区| 99香蕉国产精品偷在线观看 | 中文字幕亚洲影视| 精品国产亚洲日本| 精品91久久久久| 欧美精品第一区| 中文在线一区| 高清av一区| 日韩欧美激情电影| 三级精品视频| 国产精品白浆| 亚洲欧美日韩国产一区二区| 久久精品国产亚洲一区二区三区| 91成人精品| 精品免费在线| 日韩黄色免费网站| 欧美日韩国产免费观看| 久久国产免费| 天堂俺去俺来也www久久婷婷| 国产二区精品| 欧美成人基地|