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

时间:2016-12-03 17:28:32

标签: polymer polymer-1.0 polymer-1.x

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

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

修改

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

重新加载浏览器

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

location = location;

and 534 other ways

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

无国籍架构

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

2 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分: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();
  }
},