NodeJS使用JWT跨域身份驗(yàn)證方案詳解
JWT(jsonwebtoken)
目前最流行的跨域身份驗(yàn)證解決方案
在nodejs中使用
安裝
npm install jsonwebtoken --save
使用
1.在路由中引入
var jwt = require('jsonwebtoken');2.定義一個(gè)密鑰
const secret = 'nidemiyao'//用于加密
3.定義生成token的函數(shù)
//生成token
//info也就是payload是需要存入token的信息
function createToken(info) {
let token = jwt.sign(info, secret, {
//Token有效時(shí)間 單位s
expiresIn:60 * 60*24
})
return token
}
4.定義驗(yàn)證token的函數(shù)
//驗(yàn)證Token
function verifyToken(token) {
console.log(token)
return new Promise((resolve, reject) => {
jwt.verify(token, secret, (error, result) => {
if(error){
reject(error)
} else {
resolve(result)
}
})
})
}
5.可以設(shè)置白名單
定義一下
//白名單 const whiteList = ['/manage/login']
6.使用
路由名.use((req,res,next) => {
if(!whiteList.includes(req.url)) {
//判斷請(qǐng)求頭是否攜帶正確的token
verifyToken(req.headers.authorization).then(res => {
next()
}).catch(e => {
res.status(401).send('403')//驗(yàn)證失敗返回什么
})
} else {
next()
}
})
場景
常用于登錄
通過創(chuàng)建密鑰返回給前臺(tái),前臺(tái)進(jìn)行一個(gè)本地保存,再在封裝請(qǐng)求中添加該請(qǐng)求頭token…即可實(shí)現(xiàn)加密!!!
//登陸
路由名.post("/manage/login",(req,res)=>{
let {user}=req.body;
let sql=`select *from admin where uname='${user.username}' and upassword='${user.password}'`;
conn.query(sql,(err,result,fields)=>{
if(err){
return "失敗";
}
console.log(result)
if(result.length!==0){
let token =createToken(user)
res.send({"result":result,"token":token});
}else{
res.send({"result":result});
}
})
});
這樣就實(shí)現(xiàn)簡單的使用了~
到此這篇關(guān)于NodeJS使用JWT跨域身份驗(yàn)證方案詳解的文章就介紹到這了,更多相關(guān)NodeJS JWT內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
node.js?readline和line-reader逐行讀取文件方法
Readline是Node的原生模塊。它是專門為從任何可讀流逐行讀取內(nèi)容而開發(fā)的。它可用于從命令行讀取數(shù)據(jù),line-reader模塊是Node.js中逐行讀取文件的開源模塊。它不是本地模塊,所以你需要使用npm(節(jié)點(diǎn)包管理器)安裝它2022-10-10
解決node-webkit 不支持html5播放mp4視頻的方法
本文給大家分享的是解決node-webkit 不支持html5播放mp4視頻的方法,其原因大概是因?yàn)閚ode-webkit沒有購買mp4格式的專利授權(quán),恩,我們來想個(gè)辦法來解決這個(gè)事情吧。2015-03-03
詳解如何使用Node.js編寫命令工具——以vue-cli為例
本篇文章主要介紹了如何使用Node.js編寫命令工具——以vue-cli為例,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-06-06
nodejs實(shí)現(xiàn)爬取網(wǎng)站圖片功能
給大家通過一個(gè)實(shí)例來教學(xué)如何用nodejs實(shí)現(xiàn)爬取網(wǎng)站圖片功能,有興趣的朋友收藏一下吧。2017-12-12
nodejs報(bào)digital?envelope?routines::unsupported錯(cuò)誤的最新解決方法
這篇文章主要介紹了nodejs報(bào)digital?envelope?routines::unsupported錯(cuò)誤的最新解決方法,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2023-02-02
Highcharts+NodeJS搭建數(shù)據(jù)可視化平臺(tái)示例
本篇文章主要介紹了Highcharts+NodeJS搭建數(shù)據(jù)可視化平臺(tái),詳細(xì)的介紹了使用Highcharts框架的經(jīng)驗(yàn),有興趣的可以了解一下。2017-01-01
Nodejs 構(gòu)建Cluster集群多線程Worker threads
這篇文章主要為大家介紹了Nodejs 構(gòu)建Cluster集群多線程Worker threads示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-10-10

