下载 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
}
})