Koa框架token的驗證
1.代碼
// 安裝創建和解析token的第三方工具 npm install jsonwebtoken // 引入使用 const jwt = require('jsonwebtoken') // 創建一個token const token = jwt.sign({ //token的創建日期 time: Date.now(), //token的過期時間 timeout: Date.now() + 60000, username: '小美', id: 1 // token:解析token的標識 }, 'token') // 解析token const a = jwt.verify(token, 'token')
2.驗證token
// 單獨的創建一個中間件,然后在app.js中注冊使用 const jwt = require('jsonwebtoken') async function check(ctx, next) { let url = ctx.url.split('?')[0] // 如果是登陸頁面和注冊頁面就不需要驗證token了 if (url === '/admin/user/login' || url === '/admin/user/register') { await next() } else { // 否則獲取到token let token = ctx.request.headers["authorization"] if (token) { // 如果有token的話就開始解析 const tokenItem = jwt.verify(token, 'token') // 將token的創建的時間和過期時間結構出來 const { time, timeout } = tokenItem // 拿到當前的時間 let data = new Date().getTime(); // 判斷一下如果當前時間減去token創建時間小於或者等於token過期時間,說明還沒有過期,否則過期 if (data - time <= timeout) { // token沒有過期 await next() } else { ctx.body = { status: 405, message:'token 已過期,請重新登陸' } } } } } module.exports = check // app.js中注冊使用 const checkToken = require('./middleware/checkToken.js') // 驗證token的中間件函數 app.use(checkToken)