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

