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

How to change users while preserving the store?

我想实现一个"fast login"。

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

我想要的是让他们能够在不注销的情况下单击来自组织的用户,输入他的密码,然后在保留商店的同时切换用户。

知道如何实现吗?

我正在使用 ember-simple-auth v1.1.0ember v2.10.2

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

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

但是 remember - 你用这种方法降低了安全性:如果有人退出并离开网页并打开应用程序,其他人将有可能提取数据(如果他们有足够的技术背景可以在最少安装 ember 检查员)。

其他解决方案将需要大量研究。我认为应该可以通过简单地替换存储中的令牌来实现自定义身份验证器,该身份验证器允许在不注销先前用户的情况下对新用户进行身份验证。但我不知道实施起来会有多困难,你会遇到什么障碍。您需要大量阅读 ember-simple-auth 的资料,这是肯定的。

我实际上能够通过简单地与另一个用户一起使用 authenticate() 但从未调用 invalidateSession() 来解决它,这是调用 sessionInvalidated() 的函数,看起来像这样:

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

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