2017-01-31 3 views
3

Mein Aurelia-Projekt ist in zwei App-Roots aufgeteilt, beide mit einer eigenen Routerstruktur. App root 1 enthält alle Bildschirme, auf denen Sie nicht authentifiziert werden müssen (login, reset pwd, ...) App root 2 alle anderen Bildschirme.Router authorizeStep von anderen App Root triggert

Ich blockiere den Zugriff auf Routen in App-Stammverzeichnis 2, wenn Sie nicht mit einem authorizeStep authentifiziert sind. In diesem Schritt setze ich den Stamm auf App-Stamm 1, wenn Sie nicht authentifiziert sind. App-Wurzel 1 hat eine Login-Ansicht als Standard-Route, das funktioniert also ganz gut. Also, wenn Sie nicht authentifiziert sind und versuchen, eine tiefe url in app root 2 zu navigieren, dies geschieht:

  1. App Root-2 konfiguriert es Routen und versucht, auf die tiefe URL zu navigieren
  2. Die authorizeStep auslöst, Sie sind nicht authentifiziert, wird die Route abgebrochen und eine aurelia.setRoot() passiert App root 1
  3. App root 1 konfiguriert es Router ist und navigiert Sie auf die Standardroute, die Login-Seite

das Problem ist, manuell abmelden. Wenn auf diese Schaltfläche in App-Stammverzeichnis 2 geklickt wird. Ich lösche Benutzerdaten, daher sind Sie nicht mehr authentifiziert. Nach diesem Schritt stelle ich manuell die Wurzel zu app Wurzel 1, und da bekomme ich eine Endlosschleife:

  1. App root 1 konfiguriert es Router ist und navigiert Sie auf die Standardroute, die Login-Seite
  2. Die authorizeStep Auslöser von App root 2 !, Sie sind nicht authentifiziert, die Route wird abgebrochen und aurelia.setRoot() passiert mit App root 1
  3. App root 1 konfiguriert seinen Router und navigiert Sie auf die Standardroute, die Anmeldeseite
  4. ...

Das Problem ist, dass der authorizeStep von root 2 beim Navigieren in root 1 ausgelöst wird. Ich habe nach einem Weg gesucht, den autorizse-Schritt zu entfernen, aber ich glaube nicht, dass das Framework dies derzeit aufdeckt. Ich finde es sehr merkwürdig, dass dieses Problem nur auftritt, wenn das Abmelden, das Deep-Linking und das Redigieren zum Login wie erwartet funktionieren.

Ich habe einen reproduzierbaren Grund für Klarheit erstellt, klicken Sie auf den Abmelden-Button und Sie werden sehen, dass die Konsole den Autorisierungsschritt unendlich wiederholt.

https://gist.run/?id=1a551dcc4bec7d191ab680a937b19cfc

Antwort

0

Es stellte sich heraus Sie die Schritte selbst löschen müssen, ist dies nicht in einem router.clear getan(), die die aurelia.setRoot() ruft intern.

Zum Glück können Sie diese Texte selbst tatsächlich tun, mit: this.pipelineProvider.reset();

ich aber dieses Verhalten nicht logisch finden, so habe ich ein Problem für sie: https://github.com/aurelia/router/issues/465

Verwandte Themen