【发布时间】:2020-03-25 22:45:16
【问题描述】:
如果用户未使用 AngularFireAuth 进行身份验证,我正在编写一个保护程序以将用户重定向到登录页面。如果没有这个库,我会将令牌存储在本地/会话存储中,当警卫触发时,我会检查存储以查看是否存在令牌。 AngularFireAuth 在数据库中存储一个令牌(其中包含身份验证信息):
但是直接检查它是不明智的,因为 AngularFireAuth 可能会在未来的任何日期改变它的工作方式。它不完全是记录在案的公共 API 的一部分。
在旧版本的 AngularFireAuth 中,我可以在我的服务中包含此方法来执行此检查:
import { AngularFireAuth } from '@angular/fire/auth';
export class AuthService {
constructor(private readonly service: AngularFireAuth) {}
public login(credentials: Credentials) {
const { email, password } = credentials;
return this.service.auth.signInWithEmailAndPassword(email, password);
}
public isLoggedIn(): boolean {
return !!this.service.auth.currentUser;
}
}
但是,这不会在刷新时持续存在。因此,当我在系统中导航时,它工作正常,但如果我刷新或离开并返回,系统会提示我再次登录。
如何编写我的 isLoggedIn 方法以便在我的守卫中调用?
【问题讨论】:
标签: angular firebase firebase-authentication angularfire2