我想实现“快速登录”。
我正在开发一个企业软件,其中许多用户在同一个组织中使用同一台计算机中的相同数据工作,我希望能够知道谁做了什么以及何时做了什么。现在他们必须注销并登录并加载数据必须重新加载到商店。
我想要的是,他们能够在不注销的情况下点击用户,从组织中插入密码并在保留商店的同时切换用户。
知道我怎么能做到这一点吗?
我正在使用ember v2.10.2
和"log" : {
"-Kn-mUmVEN_i9ogWFTK-" : {
"kit" : {
"date" : "20170619",
"time" : "0725",
"id" : "1"
}
}
}
答案 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()
,用户不会被重定向或刷新页面,新用户可以在不切换页面的情况下继续使用商店。