这绝对是一个新手问题&我是Node.js的初学者。
我不确定,这是提出这个问题的正确位置。但我可能需要这个大社区的想法。所以让我解释一下我要做的事情。
服务器配置:
情景:
我正在使用hapijs在nodejs中编写代理服务器。我的后端是基于ATG的电子商务网站,我的api将被网络浏览器,移动应用等消费。
我们计划不将ATG发送的cookie发送给浏览器和移动设备。
所以为了维护ATG的会话和cookie,这就是我们完成POC的方式。
首先我们计划不考虑存储从ATG返回的匿名用户cookie。所以我们做了两个POC。
(我们很多人都知道,匿名cookie是什么,无论如何让我解释一下,如果我说出一个词 - Guest Checkout。有很多方法可以解决这个问题。但是我的商业后端是这样实现的,当我们去网站,你把商品添加到购物车并检查那些没有登录的项目吗?这就是在我们添加项目的时候会发生什么,它们只存储在你的浏览器cookie中,它不存储在持久数据库中,无论如何用户想要登录/注册到从浏览器检索cookie并存储在数据库中的帐户(基本上该匿名购物车被转移到登录用户。)
POC-1(不考虑访客结账):
要访问我的api,用户必须登录,在成功登录后,我们生成一个rand-token并将其存储在与ATG发送的用于登录用户和设置的cookie相关联的Redis数据库中ttl 1小时并将该令牌返回给客户
现在每当他们调用任何api方法时,他们都应该在授权标头中发送令牌,我将检查令牌有效性并再次展开ttl 1小时并检索与该令牌相关的cookie,设置ATG中的cookie请求选项并提出请求。
3.在注销时,我将清除cookie并删除令牌。
通过在jwt有效负载中生成带有用户登录信息的JWT令牌,我已成功实现了JWT。使用hapi-jwt-auth2。
POC-2(维护访客Cookie),
我的API将有endpoint / auth / generatesession,而后者将返回一个64字节的随机令牌(我们正在使用rand-token npm模块),它将在24小时后到期。
< / LI>所有方法都需要访问令牌在授权标头中传回给我,我会将该令牌ttl扩展到24小时。
现在他们可以调用任何api方法,比如addtocart或其他东西,甚至在将项目添加到购物车后,突然他们想要登录或者我可以使用他们的访客会话cookie并在成功登录后将该购物车转移到持久数据库。
问题:
我道歉,如果这是一个太长的问题,那就是我解释事情的方式。
提前致谢。
答案 0 :(得分:1)