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)

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM