2017-09-20 1 views
0

Hier ist mein Winkelcode für das Routing in app.module.ts Datei.Verwenden von Winkelschutz 2. Wie man den Benutzer beim Aktualisieren der Seite angemeldet hält?

const appRoutes: Routes = [ 
{path: '', component: LoginformComponent}, 
    {path: 'dashboard', component: DashboardComponent, canActivate: [AuthenticationGuard]}, 
    {path: 'user', children: [ 
     {path: '', component: UserComponent}, 
     {path: ':id', component: UserdetailComponent} 
    ], canActivate: [AuthenticationGuard] 
    }, 
    {path: '**', component: NotfoundComponent} 
]; 

Und folgende Code repräsentieren die Guard-Datei.

export class AuthenticationGuard implements CanActivate { 

    constructor(private user: UserService, private router: Router) {} 

    canActivate(next: ActivatedRouteSnapshot, state: RouterStateSnapshot): boolean { 
    if (! this.user.getUserLoggedIn()) { 
     this.router.navigate(['/']); 
    } 
    return this.user.getUserLoggedIn(); 
    } 
} 

Guard funktioniert gut, wenn ich mich als Benutzer angemeldet ist. Aber im Falle einer Aktualisierung logge mich aus. Ich möchte eine Methode, mit der ich mich auch nach dem Aktualisieren der Seite im System anmelden kann?

Dies ist die Datei service.ts Benutzer,

@Injectable() 
export class UserService { 
    private isUserLoggedIn: boolean; 
    private username: string; 

    constructor() { 
    this.isUserLoggedIn = false; 
    } 

    setUserLoggedIn(username) { 
    this.isUserLoggedIn = true; 
    this.username = username; 
    } 

    getUserLoggedIn() { 
    return this.isUserLoggedIn; 
    } 

    getUserName() { 
    return this.username; 
    } 
} 

Kann mir jemand helfen ..........

+0

können Sie Logik von this.user.getUserLoggedIn() teilen? –

+0

@VolodymyrBilyachat Ich habe gerade meine Frage bearbeitet. – LSampath

Antwort

0

Wenn Sie Sie Seite die gesamte Anwendung neu geladen wird erneut geladen, dass ist die Komponente durchläuft ihren Lebenszyklus wieder. Abhängig von der Architektur Ihrer Anwendung müssen Sie die Authentifizierungsinformationen speichern, damit sie zwischen den Seitenaktualisierungen beibehalten werden.

Am häufigsten wird JWT verwendet, wenn Angular gearbeitet wird, aber das ist nicht immer der Fall. Wenn Sie JWT verwenden, sollten Sie das JWT-Token in einem Cookie speichern. Wenn die App neu geladen wird, überprüfen Sie, ob es vorhanden ist. Wenn es beendet wird, lesen Sie es aus dem Cookie und fahren Sie normal fort, andernfalls bitten Sie den Benutzer, sich erneut anzumelden.

+0

vielen dank. Ich werde das versuchen. – LSampath

Verwandte Themen