Polymer 1.x:如何在注销后重置整个应用程序

Polymer 1.x: How to reset entire app after logout

我有一个 Polymer 应用程序。当用户注销时,我想将整个应用程序重置为原始状态。 (现在,当用户注销后重新登录时,应用程序 returns 用户进入他们注销时所在的应用程序状态和页面。)

是否有任何方便(即全球)应用程序设计或代码模式来完成此任务?如果什么都没有 convenient/global,请说明如何在本地完成此操作(即逐个元素地完成)。

编辑

经过一些研究 (and conversations in the Polymer slack group),目前看来主要有两个建议。欢迎其他人。

重新加载浏览器

可以使用JS语句强制刷新浏览器页面:

location = location;

and 534 other ways.

这个解决方案对我来说并不令人满意。它本质上是一个 hack,会产生性能问题和其他不良副作用,例如等待屏幕刷新和重绘。

无状态架构

有人建议使用无状态应用架构。但我不确定如何在 Polymer 应用程序的编码上下文中实现它。再次欢迎提出建议和想法。

我想到的最佳解决方案是在用户注销时使用 location.reload() 方法刷新浏览器。

诀窍是您必须为您的应用程序添加一些独特的逻辑,以防止出现无限循环情况。

注销时重新加载:
user: {
  ...
  observer: '_userChanged',
},
...
_userChanged: function() {
  var bool = this.foo(); // Add logic here to prevent endless loop condition
  if( !this.user && bool ) {
    location.reload();
  }
},

几种可能的解决方案包括:

  1. 清除本地存储中的会话以及存储它的任何地方
  2. 维护所有用户定义信息的路径,并在注销时将这些对象设置为 {}
  3. 以匿名来宾用户身份登录,新用户将覆盖以前的用户信息。
  4. 保留原始主包装元素状态的深拷贝克隆,然后用旧元素替换当前元素
  5. 合并更改,如果您的用户数据保存在属性或注释中,它们将被重置。
  6. 替换维护用户信息的一个元素。