使用ReactJS和Django REST Framework,我正在构建一个用户可以注册的应用程序。
提交注册表后,用户会收到一封电子邮件激活链接。单击该链接会将用户重定向到前端,显示一条消息,告知他们电子邮件已被激活。之后,它将把用户重定向到登录屏幕。
流程A: 提交注册表格->用户收到电子邮件激活链接->消息(新标签)->登录表格
单击电子邮件激活链接后打开一个新标签页是一个关键方面,因为这意味着我将从新状态重新开始。
现在。使事情变得复杂的是,我正在开发的应用程序使用户可以填写购物车。然后他们可以要求报价。
流程B: 购物车->用户单击“请求报价”->报价概述/确认
用户需要登录才能请求报价。当他们单击以请求报价但未登录时,他们将可以选择登录或注册。
流C: 购物车->用户单击“请求报价”->页面要求用户登录或注册
当他们选择注册选项时,他们将被重定向到注册页面,并且他们将采用我之前介绍的注册流程。
现在,我要实现的是在注册过程之后将用户重定向到报价概述/确认页面。这是他们将最终进入流程B的页面。
但是问题是,由于打开了新标签,我失去了所有状态。
因此,我的猜测是,应对这种情况的方法是将前端的必要状态存储在后端。例如使用会话。
我的问题是: 是否有关于这种情况的设计模式?
我可以解决这个问题,但是我想以一种干净,正确的方式解决它。
答案 0 :(得分:2)
您可以保留希望在重新加载整个页面或在IndexDB,LocalStorage或Cookie内打开新选项卡后仍保留的内容,并在再次安装应用程序并从中预填充状态时读取该信息。
注意:IndexDB是最先进的解决方案,基于浏览器的支持则最差,LS在所有现代浏览器中均可使用,Cookie可在任何地方使用。
我将最终使用此方法存储需要为整页重新加载或在匿名用户(例如,未登录或已注册)。
例如,如果用户单击电子邮件激活链接,该链接将导致路由例如为/registration/:token
您将安装一个组件,该组件将向用户显示消息为“您已成功确认您的电子邮件”,并将其重定向到“登录”页面。但是,您可以使用上述一种解决方案中的购物车信息来预先填充状态。
用户成功登录后,您可以签入状态,然后检查cart是否为空,并执行默认重定向(例如,主页,用户个人资料或管理信息中心),或者cart减速器中有任何内容,重定向用户直接引用报价。