【问题标题】:How to achieve state persistance on tab reload?如何在标签重新加载时实现状态持久化?
【发布时间】:2020-06-22 22:39:17
【问题描述】:

简化用例

我有一个名为 data_store 的单页网络应用。这个应用程序有 2 个简单的任务列表

  1. 列出用户
  2. 显示用户详细信息(点击用户时)。

现在,我有 2 个路线

  1. data_store/all_user
  2. data_store/user_detail

*为简单起见,所有其他因素都可以忽略。


问题:当我在data_store/user_detail 重新加载标签时,我失去了详细信息的用户的唯一 ID显示出来。

问题:如何在标签重新加载时保留唯一 ID?并使其在重复的选项卡中无缝工作?


失败的解决方案

1st,使用data_store/user_detail/<UUID> 格式,但出于安全原因,我不能在我的 URL 中公开它。

第二,使用local_storage 来存储当前的UUID,但随后重新加载具有不同用户详细信息的其他选项卡会中断。 原因:因为它们也通过任何其他选项卡获取了最后一个设置值。

第三,使用session_storage,但问题是在复制标签而不是打开新标签时。用于复制选项卡的 chrome 使用 window.open 并生成一个子选项卡,该选项卡共享其父选项卡的所有信息,包括 sessionStorage。

【问题讨论】:

    标签: javascript angular web


    【解决方案1】:

    我认为您可以将用户的加密标识符放在 URL 中,如果您的加密是基于种子的,那么应该可以对其进行加密/解密,并使一些基本的黑客无法使用。

    我发现this thread指的是低级别的加密,也许它可以帮助你。

    对于更高的加密级别,crypto-js 可能是一个解决方案。

    现在,如果你不想在你的 url 中添加参数并且不需要支持 IE get the tab id 并用它来存储你的数据,所以重新加载它会很容易将数据与选项卡相关联。我不知道标签重复的行为。

    【讨论】:

      猜你喜欢
      • 2020-02-10
      • 1970-01-01
      • 2019-08-30
      • 1970-01-01
      • 2011-12-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-12-17
      相关资源
      最近更新 更多