2016-04-27 10 views
1

Der Google Identity Toolkit-Workflow hat Probleme, wenn Angular oder andere JavaScript-Frameworks integriert werden.GITK mit Angular 2 hat Probleme bei Umleitungen mit Fragmenten (# Hash)

Angular verwendet URL-Fragmente (#), um zwischen den Ansichten zu navigieren. Es ist auch möglich, mit dem HTML5-Stil zu navigieren und zu vermeiden, Hashes zu verwenden, aber leider hat Angular 2 ein Problem bei der korrekten Handhabung von Fragmenten, https://github.com/angular/angular/issues/6595.

Da intern URL-Fragmente durch Winkel- und ähnliche Gerüste verwendet werden, es wird GITK verhindert unter Umständen richtig zu arbeiten:

Während des Login-Workflow, wenn der Benutzer erfolgreich von einem Dritten singen-in-Service der Benutzer berechtigt ist wird zurück zur GITK-Widget-Seite geleitet.

Die Weiterleitungs-URL enthält einen Zustandsparameter. Bei Twitter oder Facebook wird der State-Parameter als Abfrageparameter zur URL hinzugefügt (z. B. ... login /? State = AFD_5tlxzU ...). Andere Dienste wie das Google-Konto fügen jedoch das Fragment "state parameter has" der Weiterleitungs-URL hinzu (z. B. ... login/# state = AFD_5tlxzU ...).

Da Angular die URL-Fragmente zum Navigieren verwendet, wird das Statusfragment (z. B. ... login/# state = AFD_5tlxzU ...) der Weiterleitungs-URL durch das Framework entfernt, das das GITK-Widget erfolgreich verhindert Vervollständigen Sie die Authentifizierung.

Gibt es eine Option, Google-Konten oder GITK anzuweisen, Abfrageparameter anstelle von Fragmenten zu verwenden? Ich frage mich auch, was ist die rationale Verwendung von Fragmenten anstelle von Abfrageparametern für die Weiterleitungs-URL?

Antwort

1

Ich antworte auf mich selbst.

Ein Weg zur Lösung des Problems wie erwähnt here ist, die Sing-in-Logik außerhalb der angularen Routing-Pfade zu verschieben.

Zum Beispiel durch Erstellen einer separaten statischen .html-Datei, die nur für das Einspielen zuständig ist. Eine alternative Lösung wäre die Verwendung von ng2-ui-Router.

+1

Frage nur, wie genau hast du das in ng2 Ui-Router gelöst? –