登录和退出时Aurelia Push State App Reload

时间:2017-05-09 13:27:30

标签: aurelia pushstate aurelia-router aurelia-auth

当使用Aurelia和Visual Studio配置推送状态时,我得到一个奇怪的行为,在我选择登录后,我的整个应用程序重新加载而不是只是推送到主页的路由器。这也发生在我退出时,我进入登录屏幕并刷新整个应用程序。我正在使用Aurelia Auth。非常感谢任何帮助。

1 个答案:

答案 0 :(得分:0)

我认为我前段时间遇到了完全相同的问题,这是我切换回pushState = false的原因之一(但我的信息可能会对您有所帮助)。

无论如何,以下问题描述了我所面临的问题:https://github.com/paulvanbladel/aurelia-auth/issues/55

问题是,插件内部设置了href:

登录 - https://github.com/paulvanbladel/aurelia-auth/blob/master/src/authentication.js#L95-L99

if (this.config.loginRedirect && !redirect) {
  window.location.href = this.getLoginRedirect();
} else if (redirect && isString(redirect)) {
  window.location.href = window.encodeURI(redirect);
}

退出 - https://github.com/paulvanbladel/aurelia-auth/blob/master/src/authentication.js#L139-L143

if (this.config.logoutRedirect && !redirect) {
  window.location.href = this.config.logoutRedirect;
} else if (isString(redirect)) {
  window.location.href = redirect;
}

您需要做的是避免这两种情况,即将loginRedirectlogoutRedirect设置为空字符串('')。然后,像我在GH问题的例子中那样,通过Aurelias路由器自己进行导航:

return this.auth.login(userInfo)
  .then(response => {
    console.log('You signed in successfully.');
    this.router.navigate('/contents');
  })

当然,在您的注销方法上执行相同的路由器导航。