如何通过Firebase Function结束用户会话?

时间:2019-02-11 14:36:17

标签: firebase firebase-authentication google-cloud-functions

我做了一个Firebase函数,它将检测无效请求并阻止用户帐户:

if (!context.auth)
    return null;

if (!(typeof data.text === 'string') || data.text.length !== 0)
{
    return admin.auth().updateUser(context.auth.uid, { disabled: true });
}

,但是用户仍然可以在身份验证后调用该函数。 如何在云功能内部结束用户会话并强制用户再次进行身份验证?

1 个答案:

答案 0 :(得分:1)

使用Firebase Admin SDK撤销用户的刷新令牌。这适用于各种语言,但是在Node.js中,它看起来像:

// Revoke all refresh tokens for a specified user for whatever reason.
// Retrieve the timestamp of the revocation, in seconds since the epoch.
admin.auth().revokeRefreshTokens(uid)
    .then(() => {
      return admin.auth().getUser(uid);
    })
    .then((userRecord) => {
      return new Date(userRecord.tokensValidAfterTime).getTime() / 1000;
    })
    .then((timestamp) => {
      console.log("Tokens revoked at: ", timestamp);
  });

有关更多信息,请参阅文档中的revoking refresh tokens