express + jwt + postMan驗(yàn)證實(shí)現(xiàn)持久化登錄
原理
第一次登陸時會返回一個經(jīng)過加密的token,下一次訪問接口(攜帶登錄返回你的token)的時候,會對token進(jìn)行解密,如果解密正在進(jìn)行,說明你已經(jīng)登錄,再把過期時間延長
下載
npm init -y // 一鍵初始化 npm install express -s // 下載express npm install cors // 跨域中間件 npm install body-parser // body-parser中間件 解析帶請求體的數(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')
})
模擬一個登陸的接口
app.post('/login',function(req,res){
let {username} = req.body
console.log(username)
res.json({
// 進(jìn)行加密的方法
// sing 參數(shù)一:加密的對象 參數(shù)二:加密的規(guī)則 參數(shù)三:對象
token:jwt.sign({username:username},'abcd',{
// 過期時間
expiresIn:"1h"
}),
username,
code:200
})
})
postMan模擬 發(fā)送POST請求

接收到數(shù)據(jù)

得到token

登錄持久化驗(yàn)證
把 token 寫入header

// 登錄持久化驗(yàn)證接口 訪問這個接口的時候 一定要訪問token(前端頁面每切換一次,就訪問一下這個接口,問一下我有沒有登錄/登陸過期)
// 先訪問登錄接口,得到token,在訪問這個,看是否成功
app.post('/validate',function(req,res){
// 訪問 token
let token = req.headers.authorization;
// console.log(token)
// 驗(yàn)證token合法性 對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',{
// 過期時間
expiresIn:"1h"
})
}
})
})
已有登錄賬號,持久化登錄成功

設(shè)置登錄過期時間
token:jwt.sign({username:decode.username},'abcd',{
// 如果過期時間為1秒
expiresIn:"1s"
})
獲得 token

設(shè)置頭部信息

驗(yàn)證 過期時間生效

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
node.js express框架簡介與實(shí)現(xiàn)
這篇文章主要介紹了node.js express框架簡介與實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下2019-07-07
如何用npm命令刪除開發(fā)項目中的node_modules文件夾
每個項目都會產(chǎn)生一個node_modules,每個node_modules少則幾十兆,多則幾百甚至上千兆,隨著時間的積累,維護(hù)項目的增加,整個項目目錄體積會越來越大,這篇文章主要給大家介紹了關(guān)于如何用npm命令刪除開發(fā)項目中的node_modules文件夾,需要的朋友可以參考下2023-12-12
Node.js基礎(chǔ)入門之path模塊,url模塊,http模塊使用詳解
這篇文章主要為大家介紹了Node.js中的三個模塊(path、url、http)的使用詳解,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以了解一下2022-03-03
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

