Javascript 一旦用户从auth firebase服务中删除,如何注销所有会话?

Javascript 一旦用户从auth firebase服务中删除,如何注销所有会话?,javascript,firebase,firebase-authentication,google-cloud-functions,Javascript,Firebase,Firebase Authentication,Google Cloud Functions,我为Firebase函数编写了以下代码: exports.deleteVolunteer = functions.firestore.document(`${COLLECTION_PREFIX}/users/{userPhoneNumber}`).onDelete(async (snap, context) => { const userPhoneNumber = context.params.userPhoneNumber; try { const use

我为Firebase函数编写了以下代码:

exports.deleteVolunteer = functions.firestore.document(`${COLLECTION_PREFIX}/users/{userPhoneNumber}`).onDelete(async (snap, context) => {
    const userPhoneNumber = context.params.userPhoneNumber;
    try {
        const userRecord = await admin.auth().getUserByPhoneNumber(userPhoneNumber);
        await admin.auth().deleteUser(userRecord.uid);
        console.log('Successfully deleted user with phone number: ' + userPhoneNumber);
    } catch (error) {
        console.log('Failed to delete user with phone number: ' + userPhoneNumber + ' with error ' + error);
    }
    return null;
});

基本上,一旦它看到一些文档在云数据库中被删除,它就会将用户从auth服务中删除。我想退出该用户登录的所有设备的所有会话。正如您所见,用户使用电话号码连接到应用程序。如何操作?

当用户登录Firebase身份验证时,他们会得到一个有效期为一小时的ID令牌。在该令牌过期之前,无法撤销它-至少在不更改用于对所有令牌进行签名的密钥的情况下

这意味着服务器无法立即终止现有会话

相反,即时锁定用户的常用方法是:

  • 向客户端发送需要刷新令牌的信号,这将注销这些客户端,并阻止它们再次登录。这当然不会阻止恶意用户尝试使用现有令牌,因此

  • 在执行敏感操作之前,检查服务器端用户帐户是否已停用。您可以针对Firebase Authentication Admin SDK执行此操作,但更常见的是将最近停用的帐户的UID存储在您使用的数据库中,然后签入安全规则或代码

  • 有关此示例,请参阅上的文档