路由前的 Express-jwt 控制令牌
Posted
技术标签:
【中文标题】路由前的 Express-jwt 控制令牌【英文标题】:Express-jwt controle token before route 【发布时间】:2021-03-18 21:58:10 【问题描述】:我的 api 总是首先检查令牌的有效性,因此即使路由不存在也总是返回 401,如果令牌是好的,它会检查路由,如果当时路由不存在则返回 404 .
不应该先进行路由存在测试,然后进行令牌测试?
如何实现?
app.use(expressJwt( secret: process.env.SECRET_TOKEN ).unless( path: [
'/api/login'
]));
app.use(errorHandler)
function errorHandler(err, req, res, next)
if(err.status === '401') // partie api PP avec token
res.status(401).json(returnCode: 100, returnLabel: 'KO', data:);
return;
else if(err.status === '404')
res.status(404).json(returnCode: 404, returnLabel: '404', data:);
return;
else
res.status(500)
res.json(error: err)
此外,在我的情况下我无法捕捉到 404,但我有一个这样的返回,而不是像 401 这样的 errorHandler :
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>Error</title>
</head>
<body>
<pre>Cannot GET /V1/</pre>
</body>
</html>
谢谢
【问题讨论】:
【参考方案1】:好的,我自己找到了解决方案,我必须在我的代码中添加这个:
app.use(function(req, res, next)
res.status(404);
res.json(returnCode: 404, returnLabel: '404: File Not Found', data:);
return;
);
除了我的errorHandler已经到位。(显然404不会触发错误并且不适合处理程序)
否则,如果 REST API 必须先检查令牌或路径,我找不到答案?
【讨论】:
以上是关于路由前的 Express-jwt 控制令牌的主要内容,如果未能解决你的问题,请参考以下文章
使用带有 RS256 加密的 express-jwt 在应用程序路由上解码 JWT 令牌会引发未经授权的错误
如何在 express.js/passport-http-bearer 中撤销 express-jwt 令牌