<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
安裝依賴 express-jwt
npm i express-jwt
將token校驗相關資料匯入組態檔
// setting.js module.exports = { token: { // token金鑰 signKey: 'blog_globM_token_key_$$$$', // 過期時間 signTime: 3600 * 24 * 3, // 請求頭引數 header: 'authorization', // 不用校驗的路由 unRoute: [ { url: '/login', methods: ['POST']}, { url: '/register', methods: ['POST']} ] } }
token組態檔(加密/解密)
// verify.js const jwt = require('jsonwebtoken') const setting = require('../setting') const verify = { // 設定token setToken(email,_id){ return new Promise(resolve => { let token = jwt.sign( // 儲存資料,自定義 { email,_id }, // 金鑰 setting.token.signKey, // 過期時間 { expiresIn: setting.token.signTime} ) resolve(token) }) }, getToken(token){ return new Promise((resolve, reject) => { // 判斷token是否存在,這裡是根據空格分割 if(!token.split(' ').length){ reject({error: 'The token value is empty'}) }else{ // 解密token並返回資料 let data = jwt.verify(token.split(' ')[1],setting.token.signKey) resolve(data) } }) } } module.exports = verify
主檔案匯入(app.js)
const expressJwt = require('express-jwt') // 匯入組態檔 const setting = require('./setting') // 匯入token校驗檔案 const verify = require('./public/verify') // 解析token獲取使用者資訊 app.use((req, res, next) => { // 獲取請求頭中的引數 let token = req.headers[setting.token.header] if(token === undefined){ return next() }else{ // token校驗並將校驗結果儲存至請求頭中 verify.getToken(token).then(data => { req.data = data return next() }).catch(_ =>{ return next() }) } }) //驗證token是否過期並規定哪些路由不用驗證 app.use(expressJwt({ secret: setting.token.signKey }).unless({ //除了這個地址,其他的URL都需要驗證 path: setting.token.unRoute })) //當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 資料儲存在req.data中 response.author = req.data._id
介面呼叫
headers 中傳參,key: Authorization,value: 'Bearer ’ + token
Authorization : 'Bearer ’ + token
// axios config.headers['Authorization'] = 'Bearer ' + token
到此這篇關於node.js實現token身份驗證的範例程式碼的文章就介紹到這了,更多相關node.js token身份驗證內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45