1. 程式人生 > >Nodejs專案中使用token驗證,jwt,jsonwebtoken

Nodejs專案中使用token驗證,jwt,jsonwebtoken

目前 在web框架中最流行的身份驗證是使用jsonwebtoken,簡稱jwt.可以設定加密方式,過期時間,存放個人資訊,逆解析.

抽空研究了一下nodejs的jwt如何做,下面來記錄一下

使用的包是

"jsonwebtoken": "^8.3.0"

包的github地址

主要用到的方法是

生成token  jwt.sign()
驗證token  jwt.verify()

 

簽名方法:jwt.sign(payload, secretOrPrivateKey, [options, callback])

payload 是一個json物件或者是一個可以json化的buffer或字串 這個物件可以儲存使用者id,會話資訊等,這裡的資訊都是可以使用jwt.verify()方法拿到的. 

secretOrPrivateKey是加密的key或者叫做密匙,不知道密匙是無法解析payload引數的.

options 引數 是一個json物件

expiresIn : 表示有效期  不帶單位預設為秒  如帶單位如: "2 days""10h""7d"

......

還有很多引數設定,具體請檢視官文

 

如生成一個token,把使用者id放進去,設定有效期為1小時

const jwt = require('jsonwebtoken')
let token = jwt.sign({user: '1234'}, 'Fizz', {expiresIn: 60 * 60})
console.log(token)

 就這麼簡單

 

解析驗證方法:jwt.verify(token, secretOrPublicKey, [options, callback])

token: 就是token字串 由jwt.sign()方法生成的

secretOrPublicKey:是加密的key,用於解析生成token時的payload引數

options:

設定一些解密的方法....

使用方法

jwt.verify(token, 'Fizz', function (err, data) {
  if (err) console.log(err)
  console.log('解析的資料', data)
})

 使用方法就是這麼簡單

可以將token的驗證做成做一箇中間件,在路由中使用,可用於做登入攔截.獲得會話資訊