2

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

是否有任何方便的(即全局)应用程序设计或代码模式来实现这一点?如果没有什么方便/全局的,请展示如何在本地完成此操作(即,逐个元素)。

编辑

经过一些研究(以及 Polymer slack 小组中的对话),到目前为止,似乎有两个主要建议。欢迎其他人。

重新加载浏览器

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

location = location;

和 534 种其他方式

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

无状态架构

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

4

2 回答 2

1

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

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

我想出的最佳解决方案是在用户注销时使用该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();
  }
},
于 2016-12-19T01:41:23.410 回答