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

时间:2017-08-23 02:17:26

标签: javascript angular typescript firebase angularfire2

我有一点问题,找出哪种方法可以获得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)
}

1 个答案:

答案 0 :(得分:2)

我认为你正在为方法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更好。目前您将var“uid”设置为订阅,而不是实际的uid值。我还添加了一个检查,以确保用户在访问uid属性之前存在。

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

希望这有帮助!