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:
- App Root-2 konfiguriert es Routen und versucht, auf die tiefe URL zu navigieren
- Die authorizeStep auslöst, Sie sind nicht authentifiziert, wird die Route abgebrochen und eine aurelia.setRoot() passiert App root 1
- 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:
- App root 1 konfiguriert es Router ist und navigiert Sie auf die Standardroute, die Login-Seite
- Die authorizeStep Auslöser von App root 2 !, Sie sind nicht authentifiziert, die Route wird abgebrochen und aurelia.setRoot() passiert mit App root 1
- App root 1 konfiguriert seinen Router und navigiert Sie auf die Standardroute, die Anmeldeseite
- ...
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