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

站長資訊網
最全最豐富的資訊網站

從四個方面來看看 jwt 在node中的使用

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

從四個方面來看看 jwt 在node中的使用

導語:由于http是無狀態的,請求響應過程中不存儲記錄用戶身份信息,所以就出現了很多用戶識別存儲用戶身份的方法,比如cookie,session,jwt。我最近做的一個接口服務使用了jwt來存儲管理用戶信息,相較于本地cookie存儲,服務器端session存儲,jwt就變得比較安全和節省方便,本文就jwt在node服務中的使用方法做一個簡單的總結。

目錄

  • jwt簡介
  • 安裝配置
  • 封裝方法
  • 實戰練習

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

jwt簡介

概念

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

組成部分

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

  • header

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

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

一般是存儲聲明,也就是用戶信息和附件數據,分為注冊聲明、公共聲明和私人聲明。

比如:

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

利用簽名算法對Header和Payload進行簽名

比如:

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

那么一個標準的jwt簽名令牌會是這樣的eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c

應用場景

  • 用戶授權訪問

比如用戶登錄后,服務端下發一個jwt令牌給客戶端,每次用戶請求數據都在請求頭里面攜帶此令牌,服務端驗證通過后可以獲取到數據,這種方式開銷很小,并不需要服務端進行存儲,而且還可以跨域使用。

  • 信息交換

在各方之間存儲加密信息,驗證簽名內容是否篡改。

安全性

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

安裝配置

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

在npm網站,有很多的jwt包,你可以選擇你認為合適的。

搜索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

我個人覺得這個jsonwebtoken很不錯,本文就使用這個包。

npm i jsonwebtoken

常見用法

  • 簽名

簽名語法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'});  // 設置過期時間 jwt.sign({   data: 'bar' }, 'secret', { expiresIn: 60 * 60 }); // 1h
  • 驗證

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

例如:

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

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

例如:

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

封裝方法

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

  • 引入依賴包和配置
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; }
  • 驗證
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,   }); }

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

實戰練習

經過上面的封裝方法,可以來實戰演練一下,是否有效。

  • 新建一個文件夾test,新建一個文件index.js用于存放測試案例,jwt.js用于存儲調用方法。
mkdir test cd test npm init -y npm i jsonwebtoken
  • jwt方法
// jwt.js 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; }  // 驗證令牌 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;
  • 創建token,驗證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 */  // 驗證令牌 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' } */

運行一下命令node index.js測試是否正確。

好了,

贊(0)
分享到: 更多 (0)
?
網站地圖   滬ICP備18035694號-2    滬公網安備31011702889846號
久久精品五月,日韩不卡视频在线观看,国产精品videossex久久发布 ,久久av综合
国产日韩欧美在线播放不卡| 日本欧美一区二区| 日本亚洲不卡| 日韩二区在线观看| 欧美日本一区| 精品欧美日韩精品| 成人久久一区| 丝袜美腿亚洲一区| 日韩精品高清不卡| 欧美一级二级三级视频| 国产精品久久久久久av公交车| 久久av免费看| 午夜av成人| 午夜宅男久久久| 亚洲精品在线国产| 久久爱www成人| 久久精品123| 蜜臀av性久久久久蜜臀aⅴ四虎| 日本视频一区二区| 国产精品99久久精品| 亚洲大全视频| 欧美视频久久| 99精品电影| 奇米色欧美一区二区三区| 欧美国产视频| 蜜桃tv一区二区三区| 日韩欧美激情电影| 日本在线啊啊| 亚洲天堂av资源在线观看| 麻豆精品一区二区综合av| 亚洲成人国产| 欧美三级第一页| 久久精品99久久无色码中文字幕| 婷婷精品在线| 99精品视频精品精品视频| 日韩av字幕| 久久精品国产亚洲夜色av网站 | 国产精品chinese| 亚洲黄色网址| 亚洲日本三级| 日韩欧美另类一区二区| 日韩欧美久久| 久久中文字幕av| 欧美日韩一区二区三区四区在线观看| 在线手机中文字幕| 亚洲视频国产| 激情视频网站在线播放色| 亚洲人妖在线| 99精品在线观看| 精品伊人久久久| 亚洲资源在线| 激情久久婷婷| 色综合五月天| 无码日韩精品一区二区免费| 日韩成人高清| 美女视频黄久久| 亚洲一区二区小说| 久久精品高清| 成人在线视频中文字幕| 日本一区二区三区中文字幕| 亚洲精品在线观看91| 久久男人天堂| 久久久免费人体| 日韩综合一区二区| 在线亚洲一区| 日韩精品免费一区二区在线观看| 美女精品久久| 国产亚洲一区| 亚洲精品影院在线观看| 亚洲国产一区二区三区在线播放| 日韩成人免费| 久久精品毛片| 欧美激情91| 国产欧美一区| 国产亚洲精aa在线看| 综合在线一区| 中文字幕一区日韩精品| 最新日韩欧美| 好吊一区二区三区| 久久亚洲在线| 蜜桃视频欧美| 午夜久久免费观看| 好吊视频一区二区三区四区| 色婷婷精品视频| 99久久久久久中文字幕一区| 亚洲性色av| 啪啪国产精品| 欧美亚洲国产一区| 亚洲香蕉网站| 日韩视频久久| 夜久久久久久| 美日韩精品视频| 亚洲三级毛片| 欧美午夜网站| 麻豆久久久久久久| 福利精品一区| 亚洲四虎影院| 亚洲精品99| 亚洲欧美视频一区二区三区| 国产精品美女久久久| 亚洲一区欧美二区| 亚洲综合五月| 国产精品一区亚洲| 久久久91麻豆精品国产一区| 国产成人精品一区二区三区在线| av资源中文在线| 精品欧美久久| 亚洲视频二区| 久久99性xxx老妇胖精品| 麻豆国产一区| 久久久精品五月天| 91久久中文| 日韩一区二区三区精品| 日本aⅴ免费视频一区二区三区| 欧美日韩一区二区三区不卡视频 | 亚洲精品欧美| 国产精品传媒麻豆hd| 成人在线丰满少妇av| 久久国产电影| 亚洲美女久久| 粉嫩av一区二区三区四区五区 | 欧美aa一级| 国产视频久久| 日本一区免费网站| 精品一区二区三区亚洲| 色爱av综合网| 一区二区三区四区在线观看国产日韩 | 精品一区毛片| 蜜臀久久99精品久久久画质超高清 | 日本欧美在线| 国内精品伊人| 99综合视频| 国产欧美一区二区精品久久久| 97精品中文字幕| 丝袜美腿一区二区三区| 日韩av成人高清| 91欧美在线| 9国产精品视频| 国产精品美女午夜爽爽| av在线最新| 亚洲最大av| 欧美激情另类| 日韩精品导航| 成人在线超碰| 水蜜桃久久夜色精品一区的特点| 国产精品xxx| japanese国产精品| 国产精品毛片久久久| 国产综合亚洲精品一区二| 日本免费在线视频不卡一不卡二| 欧美二三四区| 国产精品免费精品自在线观看| 欧美国产91| 精品一区二区三区免费看 | 免费在线欧美黄色| 婷婷激情综合| 精品视频自拍| 在线综合欧美| 裤袜国产欧美精品一区| 日韩精品中文字幕一区二区| 日韩精品久久久久久久电影99爱| 日韩欧美中文字幕一区二区三区| 久草免费在线视频| 欧美一级全黄| 视频在线在亚洲| 国产91精品对白在线播放| 国产乱人伦精品一区| 免费日韩一区二区| 色婷婷精品视频| 老鸭窝一区二区久久精品| 在线亚洲自拍| 久久理论电影| 国产伊人久久| 国产欧美日韩视频在线| 伊人成人网在线看| 日韩成人高清| 久久天堂影院| 日韩激情精品| 一级成人国产| 香蕉成人久久| av亚洲免费| 国产v综合v| 精品一二三区| 国产午夜一区| 日本色综合中文字幕| 好吊视频一区二区三区四区| 日韩伦理福利| 麻豆精品久久久| 国产毛片一区二区三区 | 久久www成人_看片免费不卡| 播放一区二区| 91日韩欧美| 精品高清久久| 欧美激情网址| 麻豆一区二区三区| 国产麻豆一区| 国产日产一区| 国产日本亚洲| 日韩不卡一区二区| 日韩高清三区|