Authguard angularfire2检查电子邮件是否已验证

Authguard angularfire2检查电子邮件是否已验证,angular,firebase,firebase-authentication,angularfire2,Angular,Firebase,Firebase Authentication,Angularfire2,我目前在authguard中有以下代码,以防止未登录时访问路由,但我也希望未经验证的用户被发送到验证页面,我将如何做到这一点 canActivate(): Observable<boolean> { return Observable.from(this.auth) .take(1) .map(state => !!state) .do(authenticated => { if (!authenticated) this.router.navigat

我目前在authguard中有以下代码,以防止未登录时访问路由,但我也希望未经验证的用户被发送到验证页面,我将如何做到这一点

canActivate(): Observable<boolean> {
return Observable.from(this.auth)
  .take(1)
  .map(state => !!state)
  .do(authenticated => {
    if (!authenticated) this.router.navigate(['/login']);
  })
}
canActivate():可观察{
返回可观察的.from(this.auth)
.采取(1)
.map(状态=>!!状态)
.do(已验证=>{
如果(!authenticated)this.router.navigate(['/login']);
})
}

您可以检查
emailVerified
属性的值:

构造函数(私有af:AngularFire){
canActivate():可观察的{
返回this.af.auth
.采取(1)
.map(auth=>auth.auth.emailVerified)
.do(emailVerified=>{
如果(!emailVerified)此.router.navigate(['/验证电子邮件']);
});
}

注意<代码中的code>this.auth可能已经是可见的。无需将其包装在可观察的
中。从()

可以检查
emailVerified
属性的值:

构造函数(私有af:AngularFire){
canActivate():可观察的{
返回this.af.auth
.采取(1)
.map(auth=>auth.auth.emailVerified)
.do(emailVerified=>{
如果(!emailVerified)此.router.navigate(['/验证电子邮件']);
});
}

注意<代码中的code>this.auth可能已经是可见的。无需将其包装在可观察的范围内。from()

我只是尝试了你在这里所说的。我得到:error_handler.js:56异常:Uncaught(承诺中):TypeError:无法读取null类型的属性'auth':无法读取null类型的属性'auth'。如果
auth
为null,则可能意味着当前用户未经身份验证,因此无法访问其属性。在尝试访问
auth.auth.emailVerified
之前,您可以通过在代码中测试
auth
不为空来修复它。我刚刚尝试了您在这里所说的。我得到:error_handler.js:56异常:Uncaught(承诺中):TypeError:无法读取null类型的属性'auth':无法读取null类型的属性'auth'。如果
auth
为null,则可能意味着当前用户未经身份验证,因此无法访问其属性。在尝试访问
auth.auth.emailVerified
之前,您可以通过在代码中测试
auth
不为空来修复此问题。