egg中使用jwt


一.在egg里面(此時egg已部署完畢)安裝egg-jwt

npm i egg-jwt -S

 

二.配置  在config.plugin.js文件里

 

並在config/config.default.js里面 


三.使用(一般都是在前端登錄並且用戶存在時,后端會生成一個token返給前端)

  在service文件夾里面的home.js

 

  中間件 在middleware/jwt.js里面(egg規定中間件要寫在middleware文件內)

 

const whiteList=['/reg','/login']//白名單(一般登錄注冊這兩個接口不需要校驗token)此處也可配置在全局

module.exports=(options)=>{
    return async function(ctx,next){
        if(!whiteList.some(item=>item==ctx.request.url)){//判斷接口路徑是否在白名單
            let token = ctx.request.header.authorization//拿到token
            if(token){//如果token存在
                let decoded = ctx.app.jwt.verify(token.slice(7),ctx.app.config.jwt.secret)//解密token
                if(decoded&&decoded.message){
                    ctx.body={
                        code:0,
                        msg:decoded.message
                    }
                }else{
                    ctx.username=decoded.username//把接口帶來的用戶名存在ctx上,方便后續做判斷。
                    await next()
                }
            }else{
                ctx.body={
                    code:0,
                    msg:'沒有token'
                }
            }
        }else{
            await next()
        }
    }
}

 

 

 

(egg中間件有3種使用方式,這里是在router中使用的)在router.js中,需要校驗的token的路由,把token寫在路由里:

最后使用postman測試下就知道結果了。

 


免責聲明!

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



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