在AngularFire2中获取用户ID的最安全方法



我在弄清楚哪种方法是在AngularFire2中获取经过身份验证的用户uid的最安全方法时遇到了一个小问题。我注意到有两种方法可以实现这一点。我不确定哪种是最安全的获取方式,以防其中一种方法存在必须事先满足的问题/某些条件。

方法 1:使用身份验证变量

constructor(private afAuth: AngularFireAuth) { 
let uid = this.afAuth.auth.currentUser.uid
}

方法2:订阅

constructor(private afAuth: AngularFireAuth) { 
let uid = this.afAuth.authState.subscribe(user => user.uid)
}

我认为您正在为方法 2 寻找类似的东西。

constructor(private afAuth: AngularFireAuth) { 
this.afAuth.authState.subscribe(user => {
if(user) {
this.uid = user.uid;
} else {
// Empty the value when user signs out
this.uid = null;
}
});
}

在这种情况下,它将比方法 1 更好。当前,你正在将变量"uid"设置为订阅,而不是实际的 uid 值。我还添加了一个检查以确保用户在访问 uid 属性之前存在。

第一个选项的问题在于,如果用户注销并以其他帐户重新登录,则 uid 将保持不变。后者订阅了身份验证状态,因此您不会遇到此问题。

希望这有帮助!

最新更新