重定向到其他 api 端点的中间件

问题描述 投票:0回答:1

我已经构建了一个 API,供用户登录我的应用程序并检索 JWT 令牌(豪华刷新令牌)。这是使用不受保护的路线完成的。同一 API 还有一些其他路由,这些路由始终与用户配置文件相关,这些路由受中间件保护,该中间件检查访问或刷新令牌是否有效,并在情况下允许您访问该路由。太好了,这是用这段代码完成的:

// Route to fetch user profile info
router.post('/countmyitems', verifyToken, countMyIssues);

但是我们处于一个特定的 API 中。 现在假设我想为应用程序中管理的其他事物创建一个单独的 API(我希望为不同的功能拥有单独的端点)。我看到两种选择:

  • 我克隆了这个 API,删除了未受保护的路由并更改了受保护的路由以匹配新功能;
  • 我为新功能创建了一个新的 API,并使用此用户 API 中间件来保护它。

在第一个场景中,每次我对授权部分进行一些更改时,我都必须为每个 API 复制它(如果我更改中间件)。

在第二个场景中,我将其更改为类似(伪代码):

// Route to fetch other info
router.post('/otherendpoint', verifyToken, http://localhost:4001/api/otherendpoint);

其中 localhost:4001 是新 API 的服务器

替代方案二可以管理吗?我该如何设置?

node.js express routes
1个回答
0
投票

实际上还有第三种选择。

最佳实践是在 resource api 上验证 JWT。如果 JWT 无效,则向客户端返回 401 未经授权的响应。

客户端将拦截 401 错误,向身份验证 api发送新的身份验证请求,并向客户端返回有效的 JWT。

最后重新执行对resource api的原始请求并附加新的JWT。

© www.soinside.com 2019 - 2024. All rights reserved.