日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Express接口案例 使用jsonwebtoken

發布時間:2024/7/5 编程问答 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Express接口案例 使用jsonwebtoken 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一、jsonwebtoken的使用

jsonwebtoken官方文檔





const jwt = require('jsonwebtoken') // 以同步的方式,生成jwt // const token = jwt.sign({ // foo: 'bar' // }, 'zepzepep')// 以異步的方式,生成jwt const token = jwt.sign({foo: 'bar' }, 'zepzepep', (err, token) => {if(err) {return console.log('生成token失敗!')}console.log(token) })// 以同步的方式,驗證jwt // const ret = jwt.verify('eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJmb28iOiJiYXIiLCJpYXQiOjE2Mjc5OTI5MTd9.XkR-DLthQLFxwsNKj5Ex8hSUaFGlHia_zJtm2leziSk' // ,'zepzepep') // console.log(ret)// 以異步的方式,驗證jwt const ret = jwt.verify('eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJmb28iOiJiYXIiLCJpYXQiOjE2Mjc5OTI5MTd9.XkR-DLthQLFxwsNKj5Ex8hSUaFGlHia_zJtm2leziSk','zepzepep', (err, ret) => {if(err) {return console.log('token解析失敗!')}console.log(ret)})

二、用戶登錄-生成token并發送到客戶端

2.1 將回調函數形式的方法轉成promise形式

利用nodejs內置的util模塊的promisify()函數

const jwt = require('jsonwebtoken') const { promisify } = require('util')// 把sign()回調函數轉換成支持promise的sign()形式 exports.sign = promisify(jwt.sign) exports.verify = promisify(jwt.verify)// jwt.decode() // 不做驗證,將token直接進行解析 exports.decode = promisify(jwt.decode)


三、使用中間件統一處理JWT身份認證


const { verify } = require('../util/jwt.js') const { jwtSecret } = require('../config/config.default.js') const { User } = require('../model/index.js')module.exports = async (req, res, next) => {// 從請求頭獲取 token 數據var token = req.headers['authorization']token = token ? token.split('Bearer ')[1] : nullif(!token) {return res.status(401).end()}// 驗證token是否有效try {const decodedToken = await verify(token, jwtSecret)console.log(decodedToken)const user = await User.findById(decodedToken.userId)req.user = usernext()} catch (err) {return res.status(401).end()}// 無效 -> 響應401// 有效 -> 把用戶信息讀取出來掛載到 req 請求對象上// 繼續往后執行 }

四、JWT過期時間和接口測試工具自動設置添加Token數據




總結

以上是生活随笔為你收集整理的Express接口案例 使用jsonwebtoken的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。