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)