express + jwt + postMan驗(yàn)證實(shí)現(xiàn)持久化登錄
原理
第一次登陸時(shí)會(huì)返回一個(gè)經(jīng)過(guò)加密的token,下一次訪問(wèn)接口(攜帶登錄返回你的token)的時(shí)候,會(huì)對(duì)token進(jìn)行解密,如果解密正在進(jìn)行,說(shuō)明你已經(jīng)登錄,再把過(guò)期時(shí)間延長(zhǎng)
下載
npm init -y // 一鍵初始化 npm install express -s // 下載express npm install cors // 跨域中間件 npm install body-parser // body-parser中間件 解析帶請(qǐng)求體的數(shù)據(jù)(post,put) npm install jsonwebtoken // 持久化登錄 jwt json web token
基本配置
// 引入express let express = require('express') let cors = require('cors') let bodyParser = require('body-parser') let jwt = require("jsonwebtoken") let banner = require("./banner") // 拿到服務(wù)器 let app = express() app.use(cors()) app.use(bodyParser.json()) app.use(bodyParser.urlencoded({extended:false})) // listen 后面跟著的是端口 app.listen(8000,function(){ console.log('OK') })
模擬一個(gè)登陸的接口
app.post('/login',function(req,res){ let {username} = req.body console.log(username) res.json({ // 進(jìn)行加密的方法 // sing 參數(shù)一:加密的對(duì)象 參數(shù)二:加密的規(guī)則 參數(shù)三:對(duì)象 token:jwt.sign({username:username},'abcd',{ // 過(guò)期時(shí)間 expiresIn:"1h" }), username, code:200 }) })
postMan模擬 發(fā)送POST請(qǐng)求
接收到數(shù)據(jù)
得到token
登錄持久化驗(yàn)證
把 token 寫入header
// 登錄持久化驗(yàn)證接口 訪問(wèn)這個(gè)接口的時(shí)候 一定要訪問(wèn)token(前端頁(yè)面每切換一次,就訪問(wèn)一下這個(gè)接口,問(wèn)一下我有沒(méi)有登錄/登陸過(guò)期) // 先訪問(wèn)登錄接口,得到token,在訪問(wèn)這個(gè),看是否成功 app.post('/validate',function(req,res){ // 訪問(wèn) token let token = req.headers.authorization; // console.log(token) // 驗(yàn)證token合法性 對(duì)token進(jìn)行解碼,解碼方式要和加密方式一樣 jwt.verify(token,'abcd',function(err,decode){ if(err){ res.json({ msg:'當(dāng)前用戶未登錄' }) }else { // 證明用戶已經(jīng)登錄 res.json({ username:decode.username, msg:'已登錄' }) token:jwt.sign({username:decode.username},'abcd',{ // 過(guò)期時(shí)間 expiresIn:"1h" }) } }) })
已有登錄賬號(hào),持久化登錄成功
設(shè)置登錄過(guò)期時(shí)間
token:jwt.sign({username:decode.username},'abcd',{ // 如果過(guò)期時(shí)間為1秒 expiresIn:"1s" })
獲得 token
設(shè)置頭部信息
驗(yàn)證 過(guò)期時(shí)間生效
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
nodejs 使用nodejs-websocket模塊實(shí)現(xiàn)點(diǎn)對(duì)點(diǎn)實(shí)時(shí)通訊
這篇文章主要介紹了nodejs 使用nodejs-websocket模塊實(shí)現(xiàn)點(diǎn)對(duì)點(diǎn)實(shí)時(shí)通訊的實(shí)例代碼,代碼簡(jiǎn)單易懂,非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2018-11-11使用ExcelJS快速處理Node.js爬蟲數(shù)據(jù)
Excel.js是一個(gè)強(qiáng)大的JavaScript庫(kù),它提供了方法處理Excel文件,例如創(chuàng)建和編輯工作簿、讀取和寫入數(shù)據(jù)、處理行和列、設(shè)置樣式、導(dǎo)入和導(dǎo)出數(shù)據(jù)等,本文介紹使用ExcelJS快速處理Node.js爬蟲數(shù)據(jù)的方法,一起看看吧2024-01-01DevEco?Studio設(shè)置Nodejs提示路徑只能包含英文、數(shù)字、下劃線等解決辦法
這篇文章主要給大家介紹了關(guān)于DevEco?Studio設(shè)置Nodejs提示路徑只能包含英文、數(shù)字、下劃線等的解決辦法,文中通過(guò)圖文介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2024-01-01Node.js系列之發(fā)起get/post請(qǐng)求(2)
這篇文章主要為大家詳細(xì)介紹了Node.js系列之發(fā)起get/post請(qǐng)求,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-08-08利用adb shell和node.js實(shí)現(xiàn)抖音搶紅包功能(推薦)
這篇文章主要介紹了利用adb shell和node.js實(shí)現(xiàn)抖音搶紅包功能,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下2018-02-02Nodejs使用exceljs實(shí)現(xiàn)excel導(dǎo)入導(dǎo)出
在日常開發(fā)中,我們常需在后臺(tái)管理系統(tǒng)中實(shí)現(xiàn)數(shù)據(jù)的導(dǎo)入與導(dǎo)出功能,以便與?Excel?文件進(jìn)行交互,本文將使用使用exceljs實(shí)現(xiàn)excel導(dǎo)入導(dǎo)出功能,需要的可以參考下2024-03-03nodejs實(shí)現(xiàn)簡(jiǎn)單的gulp打包
因?yàn)橹耙恢庇腥私o我推薦gulp,說(shuō)他這里好哪里好的。實(shí)際上對(duì)我來(lái)說(shuō)夠用就行。grunt熟悉以后實(shí)際上他的配置也不難,說(shuō)到效率的話確實(shí)是個(gè)問(wèn)題,尤其項(xiàng)目大了以后,目前位置遇到的項(xiàng)目都還可以忍受。不過(guò)不管怎么說(shuō),需要親自用過(guò)gulp之后才能品評(píng)他和grunt之間的優(yōu)劣。2017-12-12