Javascript 如何使用Firebase';s onAuthStateChanged以跟踪用户登录状态?
我已经用Firebase设置了一个用户登录流,现在正试图在用户未登录时保护页面不被访问。从中,我知道我可以使用Javascript 如何使用Firebase';s onAuthStateChanged以跟踪用户登录状态?,javascript,angular,firebase,firebase-authentication,Javascript,Angular,Firebase,Firebase Authentication,我已经用Firebase设置了一个用户登录流,现在正试图在用户未登录时保护页面不被访问。从中,我知道我可以使用onAuthStateChanged跟踪用户登录状态,但我不确定该函数中包含哪些内容,以允许我识别用户是否从route guard登录。如何使用onAuthStateChanged跟踪登录状态 编辑: 更具体地说,我不确定在调用onAuthStateChanged时如何引导路由器。我试着打电话给一个路由器 @组件({ 选择器:'应用程序根', templateUrl:'app.compo
onAuthStateChanged
跟踪用户登录状态,但我不确定该函数中包含哪些内容,以允许我识别用户是否从route guard登录。如何使用onAuthStateChanged
跟踪登录状态
编辑:
更具体地说,我不确定在调用onAuthStateChanged
时如何引导路由器。我试着打电话给一个路由器
@组件({
选择器:'应用程序根',
templateUrl:'app.component.html'
})
导出类AppComponent{
建造师(
私人afAuth:AngularFireAuth,
专用路由器:路由器,
) {
this.afAuth.auth.onAuthStateChanged(函数(用户){
如果(用户){
这个.router.navigate('home');
}否则{
this.router.navigate('login');
}
});
}
}
但是当调用
onAuthStateChanged
时,我得到一个错误,指出this.router
未定义。我意识到问题是匿名函数的作用域问题。使用=>
语法可以修复此问题
@组件({
选择器:'应用程序根',
templateUrl:'app.component.html'
})
导出类AppComponent{
建造师(
私人afAuth:AngularFireAuth,
专用路由器:路由器,
) {
this.afAuth.auth.onAuthStateChanged((用户)=>{
如果(用户){
这个.router.navigate('home');
}否则{
this.router.navigate('login');
}
});
}
}
API文档:您的问题应该更像是“无法访问嵌套函数内部的全局变量(即函数内部的函数)”,解决方案是在函数内部使用箭头函数。