最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

node.js實(shí)現(xiàn)token身份驗(yàn)證的示例代碼

 更新時(shí)間:2022年02月09日 09:09:47   作者:蘿卜砸大坑  
本文主要介紹了node.js實(shí)現(xiàn)token身份驗(yàn)證的示例代碼,文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

安裝依賴 express-jwt

npm i express-jwt

將token校驗(yàn)相關(guān)數(shù)據(jù)導(dǎo)入配置文件

// setting.js
module.exports = {
? ? token: {
? ? ?? ?// token密鑰
? ? ? ? signKey: 'blog_globM_token_key_$$$$',
? ? ? ? // 過(guò)期時(shí)間
? ? ? ? signTime: 3600 * 24 * 3,
? ? ? ? // 請(qǐng)求頭參數(shù)
? ? ? ? header: 'authorization',
? ? ? ? // 不用校驗(yàn)的路由
? ? ? ? unRoute: [
? ? ? ? ? ? { url: '/login', methods: ['POST']},
? ? ? ? ? ? { url: '/register', methods: ['POST']}
? ? ? ? ]
? ? }
}

token配置文件(加密/解密)

// verify.js
const jwt = require('jsonwebtoken')
const setting = require('../setting')

const verify = {
?? ?// 設(shè)置token
? ? setToken(email,_id){
? ? ? ? return new Promise(resolve => {
? ? ? ? ? ? let token = jwt.sign(
? ? ? ? ? ? ?? ?// 存儲(chǔ)數(shù)據(jù),自定義
? ? ? ? ? ? ? ? { email,_id },
? ? ? ? ? ? ? ? // 密鑰
? ? ? ? ? ? ? ? setting.token.signKey,
? ? ? ? ? ? ? ? // 過(guò)期時(shí)間
? ? ? ? ? ? ? ? { expiresIn: setting.token.signTime}
? ? ? ? ? ? )
? ? ? ? ? ? resolve(token)
? ? ? ? })
? ? },
? ? getToken(token){
? ? ? ? return new Promise((resolve, reject) => {
? ? ? ? ?? ?// 判斷token是否存在,這里是根據(jù)空格分割
? ? ? ? ? ? if(!token.split(' ').length){
? ? ? ? ? ? ? ? reject({error: 'The token value is empty'})
? ? ? ? ? ? }else{
? ? ? ? ? ? ?? ?// 解密token并返回?cái)?shù)據(jù)
? ? ? ? ? ? ? ? let data = jwt.verify(token.split(' ')[1],setting.token.signKey)
? ? ? ? ? ? ? ? resolve(data)
? ? ? ? ? ? }
? ? ? ? })
? ? }
}

module.exports = verify

主文件導(dǎo)入(app.js)

const expressJwt = require('express-jwt')
// 導(dǎo)入配置文件
const setting = require('./setting')
// 導(dǎo)入token校驗(yàn)文件
const verify = require('./public/verify')

// 解析token獲取用戶信息
app.use((req, res, next) => {
?? ?// 獲取請(qǐng)求頭中的參數(shù)
? ? let token = req.headers[setting.token.header]
? ? if(token === undefined){
? ? ? ? return next()
? ? }else{
? ? ?? ?// token校驗(yàn)并將校驗(yàn)結(jié)果保存至請(qǐng)求頭中
? ? ? ? verify.getToken(token).then(data => {
? ? ? ? ? ? req.data = data
? ? ? ? ? ? return next()
? ? ? ? }).catch(_ =>{
? ? ? ? ? ? return next()
? ? ? ? })
? ? }
})
//驗(yàn)證token是否過(guò)期并規(guī)定哪些路由不用驗(yàn)證
app.use(expressJwt({
? ? secret: setting.token.signKey
}).unless({
? ? //除了這個(gè)地址,其他的URL都需要驗(yàn)證
? ? path: setting.token.unRoute?
}))
//當(dāng)token失效返回提示信息
app.use((err, req, res, next) => {
? ? if (err.status === 401) {
? ? ? ? return res.status(err.status).json({
? ? ? ? ? ? status: err.status,
? ? ? ? ? ? msg: 'The token is invalid',
? ? ? ? ? ? error: err.name + ':' + err.message
? ? ? ? })
? ? }
})

接口中使用

const verify = require('../public/verify')
const setting = require('../setting')

// 生成token
verify.setToken(response.email,userData._id).then(token => {
? ? return res.json({
? ? ? ? status:0,
? ? ? ? msg:'success',
? ? ? ? token,
? ? ? ? signTime: setting.token.signTime
? ? })
})
// token 數(shù)據(jù)存儲(chǔ)在req.data中
response.author = req.data._id

接口調(diào)用
headers 中傳參,key: Authorization,value: 'Bearer ’ + token
Authorization : 'Bearer ’ + token

// axios
config.headers['Authorization'] = 'Bearer ' + token

到此這篇關(guān)于node.js實(shí)現(xiàn)token身份驗(yàn)證的示例代碼的文章就介紹到這了,更多相關(guān)node.js token身份驗(yàn)證內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • NVM安裝nodejs的方法實(shí)用步驟

    NVM安裝nodejs的方法實(shí)用步驟

    安裝node的方式有很多種,本文主要介紹了NVM安裝nodejs的方法實(shí)用步驟,希望能幫助大家來(lái)解決問(wèn)題,感興趣的小伙伴們可以參考一下
    2019-01-01
  • 淺談Node.js 沙箱環(huán)境

    淺談Node.js 沙箱環(huán)境

    本篇文章主要介紹了Node.js 沙箱環(huán)境 ,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2018-05-05
  • Node Mongoose用法詳解【Mongoose使用、Schema、對(duì)象、model文檔等】

    Node Mongoose用法詳解【Mongoose使用、Schema、對(duì)象、model文檔等】

    這篇文章主要介紹了Node Mongoose用法,結(jié)合實(shí)例形式分析了Mongoose使用、Schema、對(duì)象、model文檔等基本原理、用法及操作注意事項(xiàng),需要的朋友可以參考下
    2020-05-05
  • 詳解Node全局變量global模塊

    詳解Node全局變量global模塊

    這篇文章主要介紹了詳解Node全局變量global模塊,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-09-09
  • Node.js API詳解之 string_decoder用法實(shí)例分析

    Node.js API詳解之 string_decoder用法實(shí)例分析

    這篇文章主要介紹了Node.js API詳解之 string_decoder用法,結(jié)合實(shí)例形式分析了Node.js API中string_decoder的功能、用法及操作注意事項(xiàng),需要的朋友可以參考下
    2020-04-04
  • Windows部署NVM并下載多版本Node.js的方法(含刪除原有Node的方法)

    Windows部署NVM并下載多版本Node.js的方法(含刪除原有Node的方法)

    這篇文章主要介紹了Windows部署NVM并下載多版本Node.js的方法(含刪除原有Node的方法),文中通過(guò)圖文結(jié)合的方式講解的非常詳細(xì),對(duì)大家了解Node.js有一定的幫助,需要的朋友可以參考下
    2025-01-01
  • node.js-v6新版安裝具體步驟(分享)

    node.js-v6新版安裝具體步驟(分享)

    下面小編就為大家?guī)?lái)一篇node.js-v6新版安裝具體步驟(分享)。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-09-09
  • Node.js(v16.13.2版本)安裝及環(huán)境配置的圖文教程

    Node.js(v16.13.2版本)安裝及環(huán)境配置的圖文教程

    本文主要介紹了Node.js(v16.13.2版本)安裝及環(huán)境配置的圖文教程,文中通過(guò)圖文介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2024-05-05
  • Windows系統(tǒng)下載、部署Node.js與npm環(huán)境的操作方法

    Windows系統(tǒng)下載、部署Node.js與npm環(huán)境的操作方法

    本文介紹在Windows電腦中,下載、安裝并配置Node.js環(huán)境與npm包管理工具的方法,文中通過(guò)圖文結(jié)合的方式講解的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作有一定的幫助,需要的朋友可以參考下
    2025-01-01
  • node.js使用mongoose操作數(shù)據(jù)庫(kù)實(shí)現(xiàn)購(gòu)物車的增、刪、改、查功能示例

    node.js使用mongoose操作數(shù)據(jù)庫(kù)實(shí)現(xiàn)購(gòu)物車的增、刪、改、查功能示例

    這篇文章主要介紹了node.js使用mongoose操作數(shù)據(jù)庫(kù)實(shí)現(xiàn)購(gòu)物車的增、刪、改、查功能,結(jié)合實(shí)例形式詳細(xì)分析了node.js使用mongoose框架操作MongoDB數(shù)據(jù)實(shí)現(xiàn)購(gòu)物車增刪改查相關(guān)技巧與使用注意事項(xiàng),需要的朋友可以參考下
    2019-12-12

最新評(píng)論

蚌埠市| 塔城市| 恩施市| 鄢陵县| 建昌县| 建昌县| 河池市| 南丰县| 开原市| 潢川县| 普陀区| 洛阳市| 新巴尔虎左旗| 无极县| 舒城县| 犍为县| 天气| 云霄县| 青铜峡市| 武乡县| 绩溪县| 睢宁县| 大丰市| 瑞丽市| 龙海市| 蛟河市| 邵阳市| 扶风县| 右玉县| 白玉县| 神农架林区| 佛山市| 介休市| 广州市| 文安县| 莫力| 嵊泗县| 景谷| 新兴县| 长海县| 衡东县|