2017-02-23 19 views
0

私は現在ログインしていないときにルートが訪れるのを防ぐため、次のコードを私の認証手配に持っていますが、検証されていないユーザーを確認ページに送ることもできます。Authguard anglefire2電子メールが確認されているかどうかを確認

constructor(private af: AngularFire) { } 

canActivate(): Observable<boolean> { 
    return this.af.auth 
    .take(1) 
    .map(auth => auth.auth.emailVerified) 
    .do(emailVerified => { 
     if (!emailVerified) this.router.navigate(['/verify-email']); 
    }); 
} 

注:

canActivate(): Observable<boolean> { 
return Observable.from(this.auth) 
    .take(1) 
    .map(state => !!state) 
    .do(authenticated => { 
    if (!authenticated) this.router.navigate(['/login']); 
    }) 
} 

答えて

1

あなたはemailVerifiedプロパティの値を確認することができます。あなたのコード内のthis.authはおそらくすでに観測可能です。 Observable.from()の中にそれを包む必要はありません。

+0

ここであなたが言ったことを試しました。 error_handler.js:56例外:キャッチされていません:TypeError:ヌルのプロパティ 'auth'を読み取ることができません TypeError:ヌルのプロパティ 'auth'を読み取れません –

+0

'auth'がnullの場合、現在のユーザーは認証されていないため、そのプロパティにアクセスすることはできません。 'auth'が' auth.auth.emailVerified'にアクセスしようとする前に 'auth'がヌルでないことをコードでテストすることで修正できます。 – AngularChef

関連する問題