我对js和nodejs还很陌生,所以我尝试使用 express-jwt 来验证我的大多数api。
但是,我想免除像**/login和/register**这样的路由的身份验证
在看过 express-jwt 的文档后,我了解到有一个名为 express-unless 的库
所以,我模仿了这个例子,看看是否能让它工作。
const unless = require('express-unless');
app
.use(authenticateWithExpressJWT)
.unless({ path: ['/login'] });
authenticateWithExpressJWT是我的中间件函数,工作正常
const jwt = require('express-jwt');
const verifyJwt = jwt({ secret: 'secreyKey', algorithms: ['HS256'] });
module.exports.authenticateWithExpressJWT = verifyJwt;
当我在Google或Stackoverflow上搜索示例时,似乎其他人使用类似代码没有任何问题。然而,当我这样做时,它甚至无法编译。我得到了这个错误
app.use(authenticateWithExpressJWT).unless({ path: ['/login'] });
^
TypeError: app.use(...).unless is not a function
at Object.<anonymous> (/home/xyz/programming/node/firstApp/index.js:27:37)
at Module._compile (internal/modules/cjs/loader.js:778:30)
at Object.Module._extensions..js (internal/modules/cjs/loader.js:789:10)
at Module.load (internal/modules/cjs/loader.js:653:32)
at tryModuleLoad (internal/modules/cjs/loader.js:593:12)
at Function.Module._load (internal/modules/cjs/loader.js:585:3)
at Function.Module.runMain (internal/modules/cjs/loader.js:831:12)
at startup (internal/bootstrap/node.js:283:19)
at bootstrapNodeJSCore (internal/bootstrap/node.js:623:3)
谁能帮我看看我到底做错了什么
我还有一个问题为什么没有require('express-unless');
的情况下,人们也能使用unless()
方法?
不管我是否添加const unless = require('express-unless');
,我都会得到上面提到的编译错误
注意:我知道不用express-unless
也能做到,我只想知道怎么用。
4条答案
按热度按时间wnavrhmk1#
我个人没有使用过
express-unless
,但根据文档,你应该能够做到这一点,因为express-jwt
本身支持unless
:在您的应用程序中,只需使用您的中间件:
hpxqektj2#
我通常通过创建如下所示的函数来免除auth的路由。
然后在入口点(index.js/app.js)导入authJwt并在整个应用中使用它。
zbsbpyhn3#
我也面临着同样的问题,认为最新版本有问题,所以我使用“express-unless”:“^1.0.0”.对我来说效果很好。
使用这个版本的软件包,我认为它的快速修复这个问题
yrefmtwq4#
使用如下;这将工作.我发现这从express-unlessgithub-readme文件