Aurelia Push State App Перезагрузить при входе и выходе

При настройке Push State с Aurelia и Visual Studio, я получаю странное поведение, когда после выбора входа в систему все мое приложение перезагружается, а маршрутизатор просто не переходит на домашнюю страницу. Это также происходит, когда я выхожу из системы, я попадаю на экран входа в систему, и он обновляет все приложение. Я использую Aurelia Auth. Любая помощь будет высоко ценится.

1 ответ

Решение

Я думаю, что у меня была точно такая же проблема некоторое время назад, и это было одной из причин, по которой я переключился на 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;
}

Что вам нужно сделать, это избежать обоих условий, то есть установить loginRedirect а также logoutRedirect в пустую строку (''). Затем выполните навигацию самостоятельно через маршрутизатор Aurelias, как я делал в своем примере из проблемы GH:

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

Конечно, выполните ту же навигацию по маршрутизатору в своем методе выхода из системы.

Другие вопросы по тегам