【问题标题】:How to change users while preserving the store?如何在保留商店的同时更改用户?
【发布时间】:2017-06-19 15:25:20
【问题描述】:

我想实现“快速登录”。

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

我希望他们能够在不注销的情况下点击组织中的用户,插入他的密码,然后在保留商店的同时切换用户。

知道我该如何做到这一点吗?

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

【问题讨论】:

  • 我从来没有听说过这个。您是否担心用户在工作前忘记切换用户?
  • 我只是希望用户能够在同事正在使用的计算机上以自己的身份快速登录,而不必等待再次加载数据。

标签: ember.js ember-simple-auth


【解决方案1】:

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

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

但请记住 - 使用此方法会降低安全性:如果有人在应用程序打开的情况下退出并离开网页,其他人将有可能提取数据(如果他们有足够的技术背景,至少可以安装 ember 检查器)。

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

【讨论】:

    【解决方案2】:

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-12-29
      • 1970-01-01
      • 1970-01-01
      • 2019-07-23
      相关资源
      最近更新 更多