一个关于koa-router路由全匹配问题
最近想使用koa给公司做个网站(刚接触koa),在使用路由的时候发现koa-router中的router.use()并不能像express的路由中router.use()一样,匹配当前层级及以后层级路由,例如
express 中
router.use('/user',adminAuth,userRouter)
会自动为/user以后的所有路由应用登录验证函数aminAuth
koa-router中
router.use('/user',adminAuth,userRouter)
只会为/user匹配使用adminAuth,之后的/user/:id,/user/....等都不会执行adminAuth
想到了koa的app.use是一个全局匹配的函数,于是就使用了app.use()
app.use(async (ctx,next)=>{
if(ctx.url.indexOf('/user')>=0){
adminAuth()
}
await next()
})
可以实现为所有/user路由登录验证,但是觉得那里不对
注:多个路由/user,/api/等使用的switch代替if
希望各位能指点下,刚接触koa,谢谢
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
你的写法是这样的吗?
.use
和.verb
是定义在同一个router
实例下的吗这样子没问题的,你搞得我都快怀疑人生了.
封装后的函数如下:
望批评指正
调用