关于koa-jwt中的用法
发布于 6 年前 作者 zkassing 3841 次浏览 来自 问答

已解决


分割线(以下为原问题) 解决方法 弃用koa-jwt 单独使用jsonwebtoken 使用了@hewentaowx hewentaowx的方法 创建了中间件利用jsonwebtoken验证,验证成功后才去走下一步,感谢大家的帮助,谢谢


网上找了很多问题但都没有找到对应的解决办法 koa-jwt中提供了unless写法 但是我我的接口中比如 /artilce/:id 是获取文章详情的 /article/:id/collection 是收藏文章使用的 那么我再使用第二个接口时需要发送token,还有其他和第二个类似的但不需要token,那么有什么方法能够让我去匹配到后者而不匹配前者。或者有没有其他能够解决的办法。望大神指教

12 回复

正则了解一下

@oyosc 但我感觉是我接口写的有问题导致了我现在开发上的困难 .get(’/articles/:type_id/page/:page’, article_controllers.get_articles_limit) .get(’/article/:id’, article_controllers.get_article) .get(’/articles/:type_id/top10’, article_controllers.get_articles_top10) .get(’/articles/rand’, article_controllers.get_articles_rand) .get(’/articles/:type_id/rand’, article_controllers.get_articles_typeid_rand) .post(’/article/:id/like’, article_controllers.like_article) .delete(’/article/:id/like’, article_controllers.cancel_like_article)

这些接口里只有最后两个需要token,我写的时候就懵逼了

如果用最笨的方法,我是否可以不用正则表达式,直接把每个不需要验证的路由都扔进去

app .use(jwt({ secret, }).unless({ path: [//article/\d+/like/], }))

这样?

可以试试在路由中间件中做验证,不需要验证的接口直接跳过

@IEfucker 但这个是的话like就不需要token了,然后js又不支持(?<!)这种写法

@OXOYO 嗯嗯,我试试这个吧,unless太不好用了

@zkassing 反了就匹配上边的呗

你写一个公共的验证 token的接口比如:verifyToken 然后在需要校验token的接口前面先调用不就好了 .post(’/article/:id/like’, verifyToken, article_controllers.like_article) .delete(’/article/:id/like’, verifyToken, article_controllers.cancel_like_article) 其他不需要token的照旧 .get(’/articles/:type_id/rand’, article_controllers.get_articles_typeid_rand)

微信图片_20180818164704.png

不写正则,用这个不好吗

@hewentaowx 谢谢您,已解决

回到顶部