express-jwt 通过路由处理特定的秘密密码

Posted

技术标签:

【中文标题】express-jwt 通过路由处理特定的秘密密码【英文标题】:express-jwt handling specific secret passphrase by routes 【发布时间】:2015-05-13 21:15:55 【问题描述】:

这是我的用例。

在我使用 express-jwt 模块的 express 应用程序中,我有 2 条主路由。我想使用 2 个不同的密码来保护我的路线。

app.use('/api/v1/admin', jwt(secret: "blabla1").unless(path:['/api/v1/admin/login']));
app.use('/api/v1', jwt(secret: "blabla2").unless(path: ['/api/v1/login']));

在这种情况下,它并没有像我预期的那样工作...... 有没有办法只在一个快递应用中实现这一目标?

提前感谢你们的帮助!

【问题讨论】:

什么不正常,你能详细说明一下吗? 嗨,当然,在这种情况下,我无法以管理员身份登录。我收到 POST /api/v1/admin/login 401 错误:未找到授权令牌 【参考方案1】:

您的语法有点不对劲,您在上面所做的是为整个应用设置密码。如果您想保护某条路线,您可以执行以下操作。

app.all('/api/v1', jwt(secret: "blabla2").unless(path: ['/api/v1/login']));
app.all('/api/v1/admin', jwt(secret: "blabla1").unless(path:['/api/v1/admin/login']));

上面的代码允许你为特定的路由定义不同的秘密。对app.all 的调用会捕获每种类型的 HTTP 调用。

【讨论】:

以上是关于express-jwt 通过路由处理特定的秘密密码的主要内容,如果未能解决你的问题,请参考以下文章

路由前的 Express-jwt 控制令牌

思科路由器配置密码以及密码长度限制设置

在 Node.js 中使用 express-jwt 令牌保护非 api (res.render) 路由

受保护路由的 jest.mock express-jwt 中间件行为

使用带有 RS256 加密的 express-jwt 在应用程序路由上解码 JWT 令牌会引发未经授权的错误

通过 Express / Auth0 后端登录用户