Firestore身份验证角度和节点

时间:2020-06-08 18:40:12

标签: javascript node.js angular firebase firebase-authentication

我有一个问题,希望您能指导我,我正在集成Angular应用程序和Node.js API,在这两种方法中,我们都使用Firestore(firebase),将Angular请求(客户端)集成到api rest(节点) (.js),当验证经过身份验证的用户(firebase)的令牌时,由于令牌永不过期,我们遇到了一个问题,我们不知道为什么令牌不过期,尽管我们在Angular应用程序中注销,但它始终作为有效令牌返回Node.js。

从客户端(角度),我们正在使用此代码将令牌发送到API(Node.js)

firebase.auth().currentUser.getIdToken(/* forceRefresh */ true).then(function(idToken) {
  // Send token to your backend via HTTPS
  // ...
}).catch(function(error) {
  // Handle error
});

Rest API的验证如下:

// idToken comes from the client app
admin.auth().verifyIdToken(idToken)
  .then(function(decodedToken) {
    let uid = decodedToken.uid;
    // ...
  }).catch(function(error) {
    // Handle error
  });

问题在于令牌永远不会过期,因为Node.js总是告诉我令牌是有效的,如果用户仍然处于活动状态,应该如何验证令牌呢?

1 个答案:

答案 0 :(得分:0)

一个新令牌将在一小时后过期。它永远都会过期-它永远不会永远存在。

您的客户端代码始终使用forceRefresh = true请求新令牌,这意味着如果将其立即发送到服务器,则服务器将始终将其视为有效。

您在做什么很好。但是,不必每次调用服务器都获得新的ID令牌。当然,您可以在给出的整个小时内重复使用令牌。 Firebase SDK会自动为您刷新令牌,因此您也可以只使用onTokenChanged来监听令牌更新,并且仅使用从提供的令牌观察器回调中获取的最新令牌。

另请参阅: