关于koa-router中对指定url进行认证的问题
思路是这样的
得到请求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()
}
})
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
自己答一下吧,找到方法了。
如上所示了,将路由按照需认证和不需认证分类好,要认证的路由加一行use来使用认证的方法,将next传进方法里,在auth方法里控制是否运行下面路由,不然就返回403
中间件不就是干这个的么
写一个中间件在所有的
router
执行之前如果匹配到需要认证的URL就执行认证流程
其余的URL直接
yield next
/await next()
即可。