2016-10-25 6 views
0

私はこのガードを私のアプリケーションで保護されたルートを見るようにしています 基本的に、私のセッションサービスはNgOnInit内のlocalStorageからクレデンシャルを抽出し、角2 - ガードする前のセッションサービスを開始する

export class SessionService implements OnInit { 
. 
. 
. 
constructor(
    private authService: AuthenticationService, 
) { 
    this.timeout = null; 
} 

ngOnInit() { 
    this.loadUser(); 
} 

さて問題はngOnInitが私のセッションサービスに自動的に呼び出されないということです。それは、これが私のセッションサービスでこのルート

import { Injectable } from '@angular/core'; 
import { Router, CanActivate } from '@angular/router'; 
import { SessionService } from './../session/session.service' 
  
@Injectable() 
export class AuthGuard implements CanActivate { 
  
    constructor(
    private router: Router, 
    private sessionService: SessionService 
    ) { } 
  
    canActivate() { 
     //without this line this won't work 
     //this.sessionService.loadUser(); 
        if (this.sessionService.isValidSession()) { 
            // logged in so return true 
            return true; 
        } 
  
        // not logged in so redirect to login page 
        this.router.navigate(['/login']); 
        return false; 
    } 
} 

を承認する必要がある場合、それは知っているので、資格情報を持っています私は明白にする必要があります私は何をしたいのではないガードの中でloadUser()を呼び出す

ガードのcanActiveの前に実行されるセッションサービスのngOnInitをどのように作るか考えていますか?

ありがとうございました!!!

答えて

0

「OnInit」サービスはコンポーネントのみで使用しないでください。代わりに、サービスのコンストラクタで必要なロードロジックを呼び出す

関連する問題