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 寫(xiě)入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)文章
node.js express框架簡(jiǎn)介與實(shí)現(xiàn)
這篇文章主要介紹了node.js express框架簡(jiǎn)介與實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-07-07
node.js爬蟲(chóng)爬取拉勾網(wǎng)職位信息
本篇文章主要介紹了node.js爬蟲(chóng)爬取拉勾網(wǎng)職位信息的方法。具有很好的參考價(jià)值。下面跟著小編一起來(lái)看下吧2017-03-03
總結(jié)幾道關(guān)于Node.js的面試問(wèn)題
這篇文章主要總結(jié)了幾道關(guān)于Node.js的面試問(wèn)題,通過(guò)這些問(wèn)題就來(lái)判斷一個(gè)人的Node.js水平是不太嚴(yán)謹(jǐn)?shù)?,但是它能讓你?duì)面試者在Node.js上的經(jīng)驗(yàn)如何有個(gè)大概的了解。有需要的朋友可以參考借鑒,下面來(lái)一起看看吧。2017-01-01
npm?install常見(jiàn)報(bào)錯(cuò)以及問(wèn)題詳解
npm?install總是一言難盡,下面這篇文章主要給大家介紹了關(guān)于npm?install常見(jiàn)報(bào)錯(cuò)以及問(wèn)題的相關(guān)資料,文中通過(guò)圖文以及實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下2023-02-02
如何用npm命令刪除開(kāi)發(fā)項(xiàng)目中的node_modules文件夾
每個(gè)項(xiàng)目都會(huì)產(chǎn)生一個(gè)node_modules,每個(gè)node_modules少則幾十兆,多則幾百甚至上千兆,隨著時(shí)間的積累,維護(hù)項(xiàng)目的增加,整個(gè)項(xiàng)目目錄體積會(huì)越來(lái)越大,這篇文章主要給大家介紹了關(guān)于如何用npm命令刪除開(kāi)發(fā)項(xiàng)目中的node_modules文件夾,需要的朋友可以參考下2023-12-12
Node.js基礎(chǔ)入門(mén)之path模塊,url模塊,http模塊使用詳解
這篇文章主要為大家介紹了Node.js中的三個(gè)模塊(path、url、http)的使用詳解,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以了解一下2022-03-03
如何利用node.js開(kāi)發(fā)一個(gè)生成逐幀動(dòng)畫(huà)的小工具
這篇文章主要給大家介紹了關(guān)于如何利用node.js開(kāi)發(fā)一個(gè)生成逐幀動(dòng)畫(huà)小工具的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用node.js具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-12-12
nodejs基于WS模塊實(shí)現(xiàn)WebSocket聊天功能的方法
這篇文章主要介紹了nodejs基于WS模塊實(shí)現(xiàn)WebSocket聊天功能的方法,結(jié)合實(shí)例形式分析了nodejs使用WS模塊進(jìn)行WebSocket通信實(shí)現(xiàn)聊天功能的具體操作技巧,需要的朋友可以參考下2018-01-01

