如何在离子和firebase身份验证中限制页面



据我所知,我所追求的是非常基本的,但我似乎找不到一个明确的解决方案,至少从我目前构建的方式来看是这样。我现在完全被难住了。

我已经让firebase电子邮件/密码登录工作得很好,并重定向到注册者页面。然而,我显然希望在注册者页面上有一些保护措施,说"如果我没有登录,请返回登录页面"。

在我的authentication-service.ts中,我设置了类authService的一个名为isLoggedIn的属性,该属性只返回true/false:

get isLoggedIn(): boolean {
const user = JSON.parse(localStorage.getItem('user'));
console.log('user: ' + user);
return (user !== null ) ? true : false;
}

因此,我(错误地(假设,在用户登录后,我可以将以下内容放在注册者页面的ngOnInit()中,这样一来,一旦访问该页面,它就会启动检查用户是否登录,一旦我知道它工作正常,我就可以输入redirectByUrl

console.log('loggedin: ' + this.authService.isLoggedIn);

但我了解到ngOnInit只被调用过一次。所以你可以进入页面,然后注销,然后返回,它不会检查用户是否登录

当我刷新页面时,它可以工作,但当它在链接中访问它时就不行了。有没有一个特定的生命周期挂钩会在每次有人点击链接访问页面时进行检查,或者它是以一种简单得多的方式完成的?

我已经意识到我可以把它放在ngDoCheck()中,但这似乎有点过分,不是吗?

您尝试过使用ionViewWillEnter吗?

https://ionicframework.com/docs/angular/lifecycle

最新更新