In meinem Projekt habe ich zwei Wachen. AuthGuard und PermissionGuard. Ich muss zuerst AuthGuard laufen lassen und wenn es gelöst ist und wenn das wahr ist, startet der permissionGuard, aber jetzt laufen diese Wächter parallel und permissionGuard funktioniert nicht gut. Die Art und Weise, wie ich für dieses Problem verwendet habe, ist, dass ich die AuthGuard CanActivate-Methode in Permission Guard aufgerufen habe, aber ich denke, dass es einen ziemlich besseren Weg dafür gibt.Angular2 run Guard nach einer anderen Wache aufgelöst
Antwort
Ich war in der gleichen Situation vor ein paar Wochen, so beschlossen, etwas "hacky" Lösung zu schreiben, um dies zu erreichen, indem Sie data
Attribut eines Route-Definition-Objekt verwenden.
Die Idee ist, Ihre eigene Wache zu definieren (nennen wir es MainGuard
), die Ihre Daten Attribut gelesen wird (zB guardsList
) mit einer Reihe von Wachen im Inneren MainGuard.canActivate
Funktion und führen sie (durch guardsList[i].canActive
Aufruf) nacheinander in ein Schleife. Sie müssen die App Injector
verwenden, um canActivate
bei gegebenem Schutz anrufen zu können.
Es wird ein wenig komplizierter, wenn Sie Observable
, Promise
und schlicht boolean
Wachen unter einem guardsList
Array unterstützen möchten, wie Sie für die Fertigstellung benötigen abonnieren und warten, usw.
ich implementiert haben dieses „hack“, wie Angular Library, die Sie so etwas wie dies zu tun erlaubt:
const appRoutes: Routes = [
{
...
canActivate: [SequentialGuards],
data: { GUARDS_SEQ: [Guard1, Guard2, Guard3] }
...
}]
- 1. Capture-Umleitung Route mit Wache in Angular2
- 2. Angular2: Nested Observables in Guard
- 3. Zugang nächste Routeninformationen innerhalb canDeactivate Wache in neuen angular2 Router
- 4. Angular2 Auth Guard mit HTTP-Anfrage und Observables
- 5. Angular2 Daten von CanActivate Guard an Resolver Resolver übergeben?
- 6. Warum stoppt die Wache?
- 7. Überprüfen Sie nach Nil mit Wache statt wenn?
- 8. Abrufen einer user_id von einem bestimmten Guard
- 9. angular2 guard funktioniert nicht auf Seitenaktualisierung
- 10. Swift "Wache lassen" auszupacken
- 11. Zurück aufgelöst von einer anderen Funktion verzögert
- 12. mehr als eine Wache in Route
- 13. Guard of lambdas Überprüfung
- 14. Elixier: Pattern Match oder Guard
- 15. Angular 2 Router - CanActivate Guard
- 16. PHP Laravel benutzerdefinierte Wache Fehler
- 17. Run sollteAutorotateToInterfaceOrientation von einer anderen Methode?
- 18. Run-Funktion innerhalb einer anderen Funktion
- 19. Angular2, Firebase, AngularFire2, route Wache und wie mit Bezug
- 20. halten Guard in einem Docker Container
- 21. Fehler in canActivate Guard Methode
- 22. Golang Wache (Assert) Funktionen Namenskonvention
- 23. Swift language: Wie geht es weiter nach einer Guard-Anweisung?
- 24. Kinder Wache: canActivateChild funktioniert nicht
- 25. So erhalten Sie die aktuelle Route Guard
- 26. Swift Wache mit und fatale Fehler in einer Funktion angegeben
- 27. Laravel 5 Register Guard vom Service Provider
- 28. Funktion Call Guard
- 29. Guard-Seite wird direkt nach VirtualProtect ausgelöst
- 30. Run-Funktion nach Verzögerung
Vielleicht [diese Antwort] (http://stackoverflow.com/a/40590812/6942210) kann Ihnen helfen. Ich denke, er hat das gleiche Problem. –
danke, die Antwort auf die Frage, die du erwähnt hast, ist die gleiche wie ich, aber wie gesagt, ich denke, dass es einen besseren Weg gibt. –
@hosseinahmadi. Brauchst du noch Hilfe dabei? – AngularChef