• Koa2框架token验证


    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)
  • 相关阅读:
    FTP Protocol
    File Operations
    Ubuntu Install Chinese Input Method
    Vim Intro
    ISA Introduction
    Fourier Transform
    Process/Thread Synchronization
    Process Synchronization-Example 2
    leetcode 栈和队列类型题
    leetcode 字符串类型题
  • 原文地址:https://www.cnblogs.com/zxuedong/p/12629269.html
Copyright © 2020-2023  润新知