CNode

关于koa-jwt中的用法

问答
Zzkassing发布于8 年前最后回复8 年前12 回复4892 浏览0 收藏

已解决


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


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

查看回复

回复 (12)

O
oyosc#1·8 年前

正则了解一下

Z
zkassing#2·8 年前
引用 oyosc正则了解一下

@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,我写的时候就懵逼了
Z
zkassing#3·8 年前

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

I
IEfucker#4·8 年前

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

这样?

O
OXOYO#5·8 年前

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

Z
zkassing#6·8 年前
引用 IEfuckerapp .use(jwt({ secret, }).unless({ path: [/\/article\/\d+\/like/], })) 这样?

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

Z
zkassing#7·8 年前
引用 OXOYO可以试试在路由中间件中做验证,不需要验证的接口直接跳过

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

H
hewentaowx#9·8 年前

你写一个公共的验证 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)

L
lizhenwu#10·8 年前

微信图片_20180818164704.png

不写正则,用这个不好吗

Z
zkassing#12·8 年前
参与回复
登录后即可参与回复。登录