jsonwebtoken生成token和解析

先上npm地址

jsonwebtoken:jsonwebtoken - npm

express-jwt:express-jwt - npmps

const express = require('express');
const jwt = require('jsonwebtoken');
const { expressjwt: expressJWT} = require('express-jwt')const app = express();// 設置密鑰
const secretKey = 'my_secret_key';// 生成Token
const token = jwt.sign({ username: 'user123' }, secretKey, { expiresIn: '1h' });// 驗證Token1(在req.auth里獲取解析值)
app.use(expressJWT({ secret: config.jwtSecretKey, algorithms:["HS256"],credentialsRequired: false,getToken: function fromHeaderOrQuerystring(req) {if ( req.headers.authorization && req.headers.authorization.split(" ")[0] === "Bearer" ) {return req.headers.authorization.split(" ")[1];} else if (req.query && req.query.token) {return req.query.token;}return null;} 
}).unless({ path: ['/api/reguser','/api/login'] }))//驗證Token2
//(這里獲取到的token值一定要是jwt生成的token,不能添加其他東西,否則會報incalid Token)
const router = express.Router()
function verifyToken(req, res, next) {const token = req.headers.authorization;if (!token) {return res.status(403).json({ code: -1, message: '請登錄后再進行操作' });}jwt.verify(token, config.jwtSecretKey, (err, decoded) => {if (err) {return res.status(500).json({ code: -1, message: 'token驗證失敗'+err });}req.user = decoded;next();});
}
router.get('/userinfo',verifyToken, (req, res) => {res.send(`Welcome ${req.user.username}!`);
});)// 啟動服務器
app.listen(3000, () => {console.log('Server started on port 3000');
});

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/210028.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/210028.shtml
英文地址,請注明出處:http://en.pswp.cn/news/210028.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

愛智EdgerOS之深入解析數據庫模塊的Redis Client

一、Redis 簡介 無論是什么類型的應用,都少不了和數據打交道。尤其是一些復雜的應用場景,都少不了一個高效可靠的數據庫。例如日常開發中最常見的 MySQL 等關系型數據庫,讓數據的存儲、檢索輕松簡單起來,甚至可以輕松地處理百萬量…

51單片機c語言燒錄軟件,51單片機燒寫程序的方法

STC89C51是應用廣泛的51單片機,很多人都是通過該單片機入門學習的,單片機的學習需要勤動手。單片機需要燒寫程序,要用到相關的軟件和硬件。下面介紹一下51單片機燒寫程序的方法。 1 所用到的硬件工具 51單片機燒寫程序需要用到單片機的UART…

C語言數組(下)

我希望各位可以在思考之后去看本期練習,并且在觀看之后獨立編寫一遍,以加深理解,鞏固知識點。 練習一:編寫代碼,演?多個字符從兩端移動,向中間匯聚 我們依舊先上代碼 //編寫代碼,演?多個字…

數據庫Delete的多種用法

數據庫的Delete操作是用來刪除數據庫中的數據記錄的,它是數據庫操作中的一種重要操作,能夠幫助用戶刪除不需要的數據,以便保持數據庫的整潔和高效。在使用Delete操作時,需要注意確保操作的準確性和安全性,以免誤刪重要…

基于 Gin 的 HTTP 中間人代理 Demo

前面實現的代理對于 HTTPS 流量是進行盲轉的,也就是說直接在 TCP 連接上傳輸 TLS 流量,但是我們無法查看或者修改它的內容。當然了,通常來說這也是不必要的。不過對于某些場景下還是有必要的,例如使用 Fiddler 進行抓包或者監控其…

觸想嵌入式工業一體機在智能垃圾分類站的應用

1、行業發展背景 根據住建部給出的目標,到2025年前,全國地級及以上城市要基本建成垃圾分類處理系統。隨著垃圾分類政策在全國強制落地,終端執行層面面臨的最迫切問題是垃圾分類的準確性與社會參與意愿,而這兩點與垃圾分類操作的簡…

CNN發展史脈絡 概述圖整理

CNN發展史脈絡概述圖整理,學習心得,供參考,錯誤請批評指正。 相關論文: LeNet:Handwritten Digit Recognition with a Back-Propagation Network; Gradient-Based Learning Applied to Document Recogniti…

Python 中的數學運算(Python Math)

更多資料獲取 📚 個人網站:ipengtao.com Python中的math模塊是數學運算的重要工具,提供了豐富的數學函數和常數。本文將深入探討math模塊的功能和用法,使您能夠更好地利用Python進行數學運算。 Python的math模塊是一個強大的工具…

C51--OLED

GME12864-12 OLED寫入指令數據: 1、start()開始 2、slave address 存積地址:011110 xx 寫入:b 0111 1000 (0x78)(R / W位置為0時,表示寫入) 3、ACK 4、cotro…

操作系統———磁盤調度算法模擬

實驗目的 磁盤是可供多個進程共享的設備,當有多個進程都要求訪問磁盤是,應采用一種最佳調度算法,以使各進程對磁盤的平均訪問時間最小。目前最成用的磁盤調度算法有先來先服務(FCFS),最短尋道時間優先&…

Spring Boot的配置文件

配置文件的作用 整個項目中所有重要的數據都是在配置文件中配置,如數據庫的連接信息,項目的啟動端口,用于發現和定位問題的普通日志和異常日志等等。配置文件可以分為兩類 系統使用的配置文件(系統配置文件)&#xf…

【Kotlin】

Lambda 就是一小段可以作為參數傳遞的代碼。 因為正常情況下,我們向某個函數傳參時只能傳入變量,而借助Lambda 卻允許傳入一小段代碼。 Lambda 表達式的語法結構: {參數名1: 參數類型, 參數名2: 參數類型 -> 函數體}首先,最外…

JS基礎源碼之手寫模擬new

JS基礎源碼之手寫模擬new 手寫模擬new初步實現最終實現 手寫模擬new new 運算符創建一個用戶定義的對象類型的實例或具有構造函數的內置對象類型之一。 我們先看看new實現了哪些功能: function Person (name,age){this.name name;this.age age;this.habit Games;…

開發猿的平平淡淡周末---2023/12/9

上周回顧 完成了遺留的開發任務,基本全部完成進一步了解了系統當時設計的原理熟悉了代碼的重構 2023.12.9 天氣晴 溫度適宜 前言 小伙伴們大家好,時間很快,又來到了周末,也是一個平平淡淡的周末。上周只更了一篇博客...原…

滲透測試 | 滲透測試之信息收集

滲透測試(penetration test,pentest)是實施安全評估(即審計)的具體手段。 滲透測試可能是單獨進行的一項工作,也可能是常規研發生命周期(例如,Microsoft SDLC)里 IT 安全…

Unicode編碼解碼

一、Unicode概述 Unicode是一種字符編碼標準,旨在解決不同字符集之間的兼容性問題。它為全球所有語言提供了一種統一的編碼方式,使得各種字符能夠在計算機系統中正確顯示和處理。Unicode字符集包含了世界上幾乎所有的字符,包括中文字符、英文…

算法Day23 簡單吃飯(0-1背包)

簡單吃飯(0-1背包) Description Input Output Sample 代碼 import java.util.Scanner; public class Main {public static void main(String[] args) {Scanner scanner new Scanner(System.in);int n scanner.nextInt();int total scanner.nextInt(…

WebDriver核心方法和屬性:掌握自動化測試的利器

在自動化測試中,Selenium WebDriver是一個非常重要的工具。它提供了一種方式來模擬用戶與瀏覽器的交互,從而進行各種操作,如點擊按鈕、輸入文本等。本文將介紹WebDriver的核心方法和屬性,以及如何使用它們。 1. 啟動和關閉瀏覽器…

使用es256算法生成jwt

1、使用hutool來做 1、先去jwt解密/加密 - bejson在線工具弄個公私鑰 2、導入hutool maven <dependency><groupId>cn.hutool</groupId><artifactId>hutool-all</artifactId><version>5.7.22</version></dependency><depe…

高項備考葵花寶典-項目進度管理輸入、輸出、工具和技術(中,很詳細考試必過)

項目進度管理的目標是使項目按時完成。有效的進度管理是項目管理成功的關鍵之一&#xff0c;進度問題在項目生命周期內引起的沖突最多。 小型項目中&#xff0c;定義活動、排列活動順序、估算活動持續時間及制定進度模型形成進度計劃等過程的聯系非常密切&#xff0c;可以視為一…