使用ReactJS和Django REST框架,我正在构建一个应用程序,用户可以在其中注册。
提交注册表格后,用户将获得一个电子邮件激活链接。单击该链接将用户重定向回前端,转到一条消息,通知他们电子邮件现在被激活。之后,它将将用户重定向到登录屏幕。
流程A:提交注册表单->用户收到电子邮件激活链接->消息(新选项卡) ->登录表单
单击电子邮件激活链接后的新选项卡打开是一个关键方面,因为这意味着我将从新状态开始。
现在。让事情变得更复杂的是,我正在开发的应用程序给用户提供了填充购物车的可能性。然后,他们可以要求报价。
流程B:购物车->用户单击“请求报价”->报价概述/确认
用户需要登录才能请求报价。当他们点击请求引号但没有登录时,他们将获得登录或注册的选项。
流程C:购物车->用户单击“请求引用”->页面,要求用户登录或注册
当他们选择注册选项时,他们将被重定向到注册页面,他们将采用我前面描述的注册流程。
现在,我想要实现的是在注册过程之后,将用户重定向到引用概述/确认页面。这是他们最终会在流程B中结束的一页。
但是问题是我失去了所有的状态,因为打开了一个新的选项卡。
因此,我猜想处理这种情况的方法是将前端的必要状态存储在后端。例如,使用会话。
我的问题是:对于这种(类型的)情况,有什么设计模式吗?
我可以解决这个问题,但我想以一种干净、恰当的方式解决它。
发布于 2019-02-07 09:35:12
您可以在IndexDB、LocalStorage或Cookie内部重新加载或打开一个新的选项卡,然后在应用程序重新挂载并从中预填充状态时读取这些信息。
注意: IndexDB是最先进的解决方案,最糟糕的是基于浏览器的支持,LS适用于所有现代浏览器,Cookies可以在任何地方工作。
我会明确地使用这种方法来存储那些需要保存完整页面的东西,重新加载或者打开一个新的选项卡(基本上是从头开始重新加载应用程序),用于匿名用户(例如,没有登录或注册)。
例如,如果用户单击电子邮件激活链接,这将导致路由(例如:/registration/:token
)。
您将挂载一个组件,该组件将将消息显示为“您已成功地确认了您的电子邮件”,并将其重定向到登录页。但是,您可以使用上述解决方案之一的cart信息预填充状态。
在用户成功登录后,您可以签入状态,然后如果cart为空,并执行默认重定向(例如主页、用户配置文件或管理仪表板),或者如果购物车减少器中有任何内容,则可以重定向用户直接引用概述。
https://stackoverflow.com/questions/54569674
复制相似问题