思路是这样的
得到请求url => 判断是否可以直接访问(验证权限) => 得到数据(DONE) or 验证权限(NEXT) => 无权限(返回403) or 得到数据(DONE)
在vue-router中启发到可以设置路由的meta信息
auth: true
就可以知道到这个url是不是要权限。
但是看到koa-router并没有这样类似的东西,应该要怎么做?
如果是vue-router的思路的话,应该像下面这样的
// 假设 '/' 是需要认证
{
path: '/',
name: 'index',
meta:{
auth: true
}
}
router.beforeEach((to, from, next) => {
if ( to.meta.auth === true ){
// 运行认证然后next
let miao = await XXX()
if ( miao === 通过 ){
next()
}else{
context.response.status = 403
return
}
}else{
next()
}
})
自己答一下吧,找到方法了。
如上所示了,将路由按照需认证和不需认证分类好,要认证的路由加一行use来使用认证的方法,将next传进方法里,在auth方法里控制是否运行下面路由,不然就返回403