点击电子邮件激活链接后如何传递状态以响应前端

时间:2019-02-07 09:03:54

标签: django reactjs django-rest-framework

使用ReactJS和Django REST Framework,我正在构建一个用户可以注册的应用程序。

提交注册表后,用户会收到一封电子邮件激活链接。单击该链接会将用户重定向到前端,显示一条消息,告知他们电子邮件已被激活。之后,它将把用户重定向到登录屏幕。

流程A: 提交注册表格->用户收到电子邮件激活链接->消息(新标签)->登录表格

单击电子邮件激活链接后打开一个新标签页是一个关键方面,因为这意味着我将从新状态重新开始。

现在。使事情变得复杂的是,我正在开发的应用程序使用户可以填写购物车。然后他们可以要求报价。

流程B: 购物车->用户单击“请求报价”->报价概述/确认

用户需要登录才能请求报价。当他们单击以请求报价但未登录时,他们将可以选择登录或注册。

流C: 购物车->用户单击“请求报价”->页面要求用户登录或注册

当他们选择注册选项时,他们将被重定向到注册页面,并且他们将采用我之前介绍的注册流程。

现在,我要实现的是在注册过程之后将用户重定向到报价概述/确认页面。这是他们将最终进入流程B的页面。

但是问题是,由于打开了新标签,我失去了所有状态。

因此,我的猜测是,应对这种情况的方法是将前端的必要状态存储在后端。例如使用会话。

我的问题是: 是否有关于这种情况的设计模式?

我可以解决这个问题,但是我想以一种干净,正确的方式解决它。

1 个答案:

答案 0 :(得分:2)

您可以保留希望在重新加载整个页面或在IndexDB,LocalStorage或Cookie内打开新选项卡后仍保留的内容,并在再次安装应用程序并从中预填充状态时读取该信息。

注意:IndexDB是最先进的解决方案,基于浏览器的支持则最差,LS在所有现代浏览器中均可使用,Cookie可在任何地方使用。

我将最终使用此方法存储需要为整页重新加载或在匿名用户(例如,未登录或已注册)。

例如,如果用户单击电子邮件激活链接,该链接将导致路由例如为/registration/:token

您将安装一个组件,该组件将向用户显示消息为“您已成功确认您的电子邮件”,并将其重定向到“登录”页面。但是,您可以使用上述一种解决方案中的购物车信息来预先填充状态。

用户成功登录后,您可以签入状态,然后检查cart是否为空,并执行默认重定向(例如,主页,用户个人资料或管理信息中心),或者cart减速器中有任何内容,重定向用户直接引用报价。