2017-02-23 78 views
0

我目前在我的authguard中有以下代碼以防止未登錄時訪問路由,但我還想將未驗證的用戶發送到驗證頁面,我該怎麼做?Authguard angularfire2檢查電子郵件是否已驗證

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

回答

1

您可以檢查emailVerified屬性的值:

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']); 
    }); 
} 

注意。你的代碼中的this.auth可能已經是可觀察的了。無需將其包裝在Observable.from()內。

+0

我剛剛試過你在這裏說的。我得到了: error_handler.js:56 EXCEPTION:未捕獲(承諾):TypeError:無法讀取屬性'auth'null TypeError:無法讀取null的屬性'auth' –

+0

如果'auth'爲null,則可能意味着您的當前用戶未通過身份驗證,因此您無法訪問其屬性。在嘗試訪問'auth.auth.emailVerified'之前,您可以通過在'auth'不爲空的代碼中測試來修復它。 – AngularChef

相關問題