在浏览器中保存无法在标签之间共享的数据的最佳方法?

时间:2018-07-10 08:44:12

标签: javascript angular cookies

我正在做一个项目,其中很多事情都依赖于cookie。目前,我们有一个奇怪的要求。我们的客户可以在不同的选项卡中使用不同的用户ID登录。

重要:sessionStorage是最好的存储方式,但有时我们在路由和其他许多情况下会丢失数据,因此我们开始将数据以及cookie保留在sessionStorage中

使用角度2和6

问题/问题

  1. 由于所有内容均基于Cookie,因此不同用户之间的数据会彼此共享,从而导致业务损失。 是否有更好的方法来处理,存储数据而不是Cookie?

    要解决问题1,我们使用了以下方法::当用户已经登录并尝试使用其他用户ID登录另一个标签时,我们会显示一个弹出窗口,显示“您已使用另一个用户登录用户ID。您要重新登录吗?”。如果用户单击“是”按钮,我们将激活当前选项卡,并停用最后一个选项卡用户会话。

    但是这里的问题是,在很多情况下,我们需要删除特定的cookie。我尝试了Jquery-cookie插件,ng2-cookies并设置了到期时间,但是每次我在chrome dev工具中打开应用程序时,我都会看到该cookie并没有被删除。每当我访问已删除的cookie时,都会得到cookie,并且逻辑失败。

第二个问题是;删除Cookie的更好方法是什么?我已经尝试过ng2-cookies`,jquery-c0okie并设置了到期时间,但是删除Cookie却没有运气。

1 个答案:

答案 0 :(得分:1)

  

我们的客户可以在不同的选项卡中使用不同的用户ID登录

这里有些谨慎!这是一个非常不寻常的要求,并且预期不会处理任何浏览器,因此任何解决方案都将成为黑客。我强烈建议您与您的客户讨论并建议他们放弃此要求。

假设这是完全不可能的,并且他们让您的家人勒索赎金,那么可以解决-使用window.name属性划分会话。您仍将对会话使用通常的cookie方法。这将需要一些JavaScript来检查空白名称,并需要Web服务来分配新名称。当然,您需要将名称注入所有表单/ URL。