如何在保留商店的同时更改用户?

时间:2017-06-19 15:25:21

标签: ember.js ember-simple-auth

我想实现“快速登录”。

我正在开发一个企业软件,其中许多用户在同一个组织中使用同一台计算机中的相同数据工作,我希望能够知道谁做了什么以及何时做了什么。现在他们必须注销并登录并加载数据必须重新加载到商店。

我想要的是,他们能够在不注销的情况下点击用户,从组织中插入密码并在保留商店的同时切换用户。

知道我怎么能做到这一点吗?

我正在使用ember v2.10.2"log" : { "-Kn-mUmVEN_i9ogWFTK-" : { "kit" : { "date" : "20170619", "time" : "0725", "id" : "1" } } }

2 个答案:

答案 0 :(得分:1)

最简单的解决方案是在用户注销时禁用页面重新加载。据我所知,重新加载会导致商店数据丢失,而不是自行注销。为此,您需要在sessionInvalidated路由中覆盖application方法。例如,

sessionInvalidated() {
    this.transitionTo('/login');
},

但请记住 - 您使用此方法降低安全性:如果有人将注销并打开应用程序打开的网页,则其他人可以提取数据(如果他们有足够的技术背景,至少可以安装ember检查员)。 / p>

其他解决方案需要大量研究。我认为应该可以实现自定义身份验证器,它可以通过简单地替换存储中的令牌来验证新用户而无需先注销。但我不知道实施起来有多难以及你能遇到什么样的障碍。你需要经常阅读ember-simple-auth的资源,这是肯定的。

答案 1 :(得分:0)

我实际上能够通过简单地将authenticate()与其他用户一起使用来解决它,但从不调用invalidateSession(),这是调用sessionInvalidated()的函数,如下所示:

sessionInvalidated() {
    if (!testing) {
      if (this.get('_isFastBoot')) {
        this.transitionTo(Configuration.baseURL);
      } else {
        window.location.replace(Configuration.baseURL);
      }
    }
  }

因此,通过不调用sessionInvalidated(),用户不会被重定向或刷新页面,新用户可以在不切换页面的情况下继续使用商店。