koa、koa2中生成token、鉴权

濮俭
2023-12-01

生成token

下载 npm i jsonwebtoken -S

//生成token
cosnt jwt=require('jsonwebtoken')//1、引入
//2、在登录接口生成token
let token=jwt.sign(
    //携带信息
    {user,pas}
    'abc',//秘钥
    {//有效期
        expiresIn:'1h'//1h一小时
    }
)
ctx.body={
    token//3、返回token 是为了挂到请求头上
}
jwt.sign(对象=>保存用户信息,秘钥,token有效期)

鉴权

//鉴权
const auth=async (ctx,next)=>{
    try{//是header,在axios中才是headers
        let {authority}=ctx.request.header//解构
        jwt.verify(authority,'abc')//验证
        
    }catch(err){//try中报错就会走catch,错误信息给err
        ctx.body={
            code:500,
            err
        }
        return;
    }
    await next();//放行函数,继续往下走
}
router.get('/api/edit',auth,async (ctx,next)=>{//在参数里执行
//需要权限才加auth,没有next()放行函数,不会往下走
    ctx.body={
        code:200
    }
})
 类似资料: