检查用户是否仍在 angularfire2 中通过身份验证
Checking if user is still authenticated in angularfire2
我有一个使用 angularfire2 的有效身份验证,我只是想知道是否有另一种方法可以在用户最近登录 w/o 访问服务器后检查用户是否已通过身份验证?
我的做法是这样的
isAuthenticated():boolean{
this.af.auth.subscribe(data => {
if(data ){
// User is authenticated
return true;
}
});
}
感谢任何帮助
编辑 1:
我决定仍然使用原始代码来检查用户是否最近登录。当您在应用程序启动时不检查用户时,@cartant 建议的内容已经足够了,因为它可能 return null 如 firebase 官方文档所述。我在这里使用它的方式是,我的菜单项应该只显示给经过身份验证的用户,并且使用 firebase.auth().currentUser
在页面初始加载时总是 return null。
AngularFire2 目前正在进行一些重构,其身份验证的重要部分 API 将被删除,以支持将 Firebase Web API 与 AngularFire2 结合使用。 this issue.
中有更多信息
您使用的可观察对象将保留在 AngularFire2 中,您可以订阅它以接收身份验证状态更改的通知。
但是,如果您只对确定当前是否存在经过身份验证的用户感兴趣,Firebase Web API 中的 currentUser
属性 会告诉您你那个:
import * as firebase from "firebase";
...
console.log(firebase.auth().currentUser);
您可以使用预建的 Route users with AngularFire guards
AngularFireAuthGuard 使用 AngularFireAuth 提供预构建的 canActivate Router Guard。
您可以通过路由数据的 authGuardPipe 传递 RXJS 管道来自定义此 AngularFireAuthGuard 的行为。您可以了解更多 here.
我有一个使用 angularfire2 的有效身份验证,我只是想知道是否有另一种方法可以在用户最近登录 w/o 访问服务器后检查用户是否已通过身份验证? 我的做法是这样的
isAuthenticated():boolean{
this.af.auth.subscribe(data => {
if(data ){
// User is authenticated
return true;
}
});
}
感谢任何帮助
编辑 1:
我决定仍然使用原始代码来检查用户是否最近登录。当您在应用程序启动时不检查用户时,@cartant 建议的内容已经足够了,因为它可能 return null 如 firebase 官方文档所述。我在这里使用它的方式是,我的菜单项应该只显示给经过身份验证的用户,并且使用 firebase.auth().currentUser
在页面初始加载时总是 return null。
AngularFire2 目前正在进行一些重构,其身份验证的重要部分 API 将被删除,以支持将 Firebase Web API 与 AngularFire2 结合使用。 this issue.
中有更多信息您使用的可观察对象将保留在 AngularFire2 中,您可以订阅它以接收身份验证状态更改的通知。
但是,如果您只对确定当前是否存在经过身份验证的用户感兴趣,Firebase Web API 中的 currentUser
属性 会告诉您你那个:
import * as firebase from "firebase";
...
console.log(firebase.auth().currentUser);
您可以使用预建的 Route users with AngularFire guards
AngularFireAuthGuard 使用 AngularFireAuth 提供预构建的 canActivate Router Guard。
您可以通过路由数据的 authGuardPipe 传递 RXJS 管道来自定义此 AngularFireAuthGuard 的行为。您可以了解更多 here.