【发布时间】:2025-11-24 00:05:03
【问题描述】:
这绝对是一个新手问题,我是 Node.js 初学者。
我不确定,这是问这个问题的正确地方。但我可能需要这个大社区的想法。所以让我解释一下我想要做什么。
服务器配置:
- Node.js - 4.0.0
- Hapi.js - 10.0.0
- Redis
场景:
我正在使用 hapijs 在 nodejs 中编写代理服务器。我的后端是基于 ATG 的电子商务网站,我的 api 将被网络浏览器、移动应用程序等使用。
我们计划不将 ATG 发送的 cookie 发送到浏览器和移动设备。
所以为了维护来自 ATG 的会话和 cookie,这就是我们完成 POC 的方式。
首先,我们计划不考虑存储从 ATG 返回的匿名用户 cookie。所以我们做了两个 POC。
(我们很多人都知道,匿名 cookie 是什么,如果我输入一个词——Guest Checkout,让我解释一下。有很多方法可以做到这一点。但是我的 Commerce Backend 是这样实现的,当我们去网站,您将商品添加到购物车并结帐该商品而无需登录对吗?每当我们添加仅存储在您的浏览器 cookie 中的商品时,在后台会发生这种情况,而不是存储在持久数据库中,无论如何用户都想要登录/注册从浏览器中检索 cookie 并存储在数据库中的帐户(基本上,匿名购物车被转移到登录用户。))
POC-1(不考虑客人结账):
要访问我的api,用户必须登录,成功登录后,我们生成一个rand-token并将其存储在Redis db中,与从ATG发送给登录用户的cookie相关联并设置ttl 1 小时并将该令牌返回给客户端
1234563 ATG 请求选项中的 cookie 并发出请求。
3.注销时我会清除cookie并删除token。
通过在 jwt 有效负载中生成带有用户登录信息的 JWT 令牌,我已成功实现了此场景的 JWT。使用 hapi-jwt-auth2。
POC-2(维护访客 Cookie),
-
我的 API 将有端点 /auth/generatesession,它又会返回一个 64 字节的随机令牌(我们为此使用 rand-token npm 模块),该令牌将在 24 小时内过期。
所有方法都需要在授权标头中将访问令牌传回给我,我会将令牌 ttl 延长到 24 小时。
1234563 .
问题:
- 我应该在第二种情况下使用 JWT 吗?如果是这样,
- 如何为第二种情况实施 JWT? (因为,不知道用户是谁?)
- 有人认为这样编写代理服务器是个好主意吗?
- 如何使用 ATG session Expiry 简化此令牌的会话到期?
- 有人这样使用 Node.js 吗?它是如何扩展的?
- 如果有人愿意告诉我如何编写这个代理服务器,那对我很有帮助。
抱歉,如果这个问题太长,只是我的解释方式。
提前致谢。
【问题讨论】:
标签: javascript node.js proxy