Nodejs專案中使用token驗證,jwt,jsonwebtoken
阿新 • • 發佈:2018-11-29
目前 在web框架中最流行的身份驗證是使用jsonwebtoken,簡稱jwt.可以設定加密方式,過期時間,存放個人資訊,逆解析.
抽空研究了一下nodejs的jwt如何做,下面來記錄一下
使用的包是
"jsonwebtoken": "^8.3.0"
主要用到的方法是
生成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的驗證做成做一箇中間件,在路由中使用,可用於做登入攔截.獲得會話資訊