首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将JWT用于使用Node.js编写的代理服务器?

如何将JWT用于使用Node.js编写的代理服务器?
EN

Stack Overflow用户
提问于 2015-09-17 19:02:25
回答 1查看 598关注 0票数 0

这绝对是一个新手问题&我是Node.js初学者。

我不确定,这里是问这个问题的合适地方。但我可能需要这个大社区的想法。所以让我来解释一下我想做什么。

服务器配置:

  1. Node.js - 4.0.0
  2. Hapi.js - 10.0.0
  3. Redis

设想情况:

我正在使用hapijs在nodejs中编写代理服务器。我的后端是基于ATG的电子商务网站,我的api将被web浏览器、移动应用等所消耗。

我们计划不将ATG发送的cookie发送到浏览器和移动端。

因此,为了维护来自ATG的会话和cookie,我们就是这样实现POC的。

首先,我们计划不考虑存储从ATG返回的匿名用户cookie。所以我们做了两个战俘。

(我们中的许多人都知道,匿名饼干是什么,我可以解释一下,如果我把这个词要做到这一点,有很多方法。但是我的商业后端是这样实现的,当我们访问网站时,您会在购物车中添加项目,然后在没有登录的情况下结帐,对吗?当我们添加仅存储在浏览器cookie中的项时,它不会存储在持久数据库中,在任何情况下,用户都希望登录/注册从浏览器中检索cookie并存储在数据库中的帐户(基本上,匿名购物车被转移到登录用户中)。

POC-1 (不考虑客人离职):

  1. 要访问我的api,用户必须登录,在成功登录后,我们生成一个rand令牌,并将其存储在Redis db中,与从ATG发送给登录用户的cookie相关联,并将ttl设置1小时并将该令牌返回客户端。
  2. 现在,每当它们调用任何api方法时,它们都应该在授权头中发送令牌,我将检查令牌有效性并再次展开ttl 1小时,并检索与该令牌相关的cookie,在ATG请求选项中设置cookie并发出请求。

3.注销时,我将清除cookie并删除令牌。

通过在JWT有效负载中生成用户登录信息的JWT令牌,我成功地实现了这个场景中的jwt。使用hapi-jwt-auth2。

POC-2 (维持客人烹饪),

  1. 我的API将有端点/auth/generatesession,它将返回一个64字节的随机令牌(我们正在使用rand-token npm模块),它将在24小时内过期。
  2. 所有方法都需要在授权头中传递给我的访问令牌,我将把该令牌扩展到24小时。
  3. 现在,他们可以调用任何api方法,比如addtocart或其他方法,即使在向cart中添加项之后,他们突然想要登录,或者我可以使用他们的来宾会话cookie,并在成功登录后将购物车传输到持久数据库。

问题:

  1. 在第二个场景中,我应该使用JWT吗?如果是这样,
  2. 如何为第二个场景实现JWT?(因为,我不知道谁是用户?)
  3. 有人认为这样写代理服务器是个好主意吗?
  4. 如何在ATG会话到期的情况下简化此令牌的会话到期?
  5. 有人像这样使用Node.js吗?它是如何扩展的?
  6. 如果有人愿意告诉我如何编写这个代理服务器,这将对我很有帮助。

我很抱歉,如果这个问题太长了,这只是我解释问题的方式。

提前谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-09-17 19:18:39

  1. 当然,有何不可?
  2. 你不一定需要一个用户。JWT存储任意数据,用户名可以是空白的或匿名的。如果用户对其进行了记录,并提供了与客户购物车相关联的令牌,则可以假设允许该用户声明该购物车的内容,并且可以销毁匿名购物车。
  3. 当然,这是很常见的(免责声明:我做过和你一样的事情)。
  4. TTL是合理的,但我不知道ATG是什么,也不知道它如何处理它。
  5. 是。只要您确保您的服务器是无状态的,并且通过类似Redis之类的东西来管理您的所有状态,它就能很好地扩展。
  6. 这个问题太宽泛了,我只想使用Express + Redis/Mongo/Postgres。
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32638095

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档