0

Ich bin für meine Web-Anwendung eine wenig Frage, die sich in Angular2 ..Angular2: Umleiten zu einer Seite beim Start der Anwendung

Jede Anwendung zu starten, würde ich prüfen, ob der Benutzer ein Zugriffsrecht hat. Allerdings weiß ich nicht, wie ich den Benutzer auf die Route umleiten soll, die diesen Prozess unabhängig von dem Ort macht, an dem er sich befindet.

Irgendwelche Ideen?

Vielen Dank im Voraus!

Antwort

1

Es gibt zwei Möglichkeiten,

  • Verwendung CanActivate
  • Verwendung einer benutzerdefinierten RouterOutlet

    wo Sie überprüfen, ob der Benutzer ansonsten auf die Login-Route umleiten authentifiziert wird

Siehe auch
- Check if the user logged in on any page change in Angular 2
- http://www.captaincodeman.com/2016/03/31/angular2-route-security/

+0

es scheint, dass eckle nicht leicht umleitungen behandelt .. Viele Bemühungen, nur um die erste Seite meiner Anwendung zu erzwingen ... Ich werde diese beiden Methoden versuchen, danke! – Gen

+1

Siehe auch http://www.captaincodeman.com/2016/03/31/angular2-route-security/ –

0

Sie könnten OnInit-Schnittstelle implementieren und Umleitung hinzufügen/Check in ngOnInit Methode und fügen Sie @CanActivate Ihr Kind Komponenten:

class Static{ 
    static authenticated:boolean = false; 
    static initialized:boolean = false; 
} 

@CanActivate(()=>{ 
    if(Static.authenticated && Static.initialized){ 
     return true; 
    } 
    return false; 
}) 

protected ngOnInit():any 
{ 
    this.loginFacade.refresh().subscribe(event=> 
    { 
     var url = event.success ? this.location.path() : Routes.LOGIN; 

     Static.authenticated = event.success; 

     this.router.recognize(url).then(()=> 
     { 
      return Promise.resolve(url); 
     }, (e)=> 
     { 
      return Promise.resolve(Routes.LOGIN); 
     }).then((url)=> 
     { 
      Static.initialized = true; 
      return this.router.navigateByUrl(url); 
     }); 
    }); 
} 

auch Standardroute entfernen.

+0

OnInit wird aufgerufen, aber ich kann den Router nicht in meiner Hauptklasse verwenden ... Ich habe den Fehler "kann nicht lesen Eigenschaft 'Konstruktor' von undefiniert ". Danke für deine Antwort – Gen

+0

Entschuldigung, dein Kommentar ist mir nicht klar. – kemsky

+0

Ich habe versucht, Ihre Lösung in meiner Klasse App, die von Bootstrap aufgerufen wird .. Und es scheint, dass wir Weiterleitungen in dieser Klasse nicht machen können – Gen