密码重置时Firebase ID令牌更改

密码重置时Firebase ID令牌更改,firebase,cookies,firebase-authentication,Firebase,Cookies,Firebase Authentication,当有人登录时,我使用Firebase ID令牌在我的站点上显示数据。 我将令牌保存在客户端的cookie中,当客户端访问网站时,它从cookie文件中获取令牌并将其发送到我的后端服务器 我想在重置密码时删除所有ID令牌,这样所有使用该用户名和密码登录的客户端都将断开连接 这个选项有效吗?如果是,你怎么做?他们在文档中似乎没有提到这一点。当用户的密码重置、更改或相关电子邮件更新时,出于安全原因,Firebase Auth将使该用户的所有现有会话无效。从Firebase Auth后端的角度来看,这将

当有人登录时,我使用Firebase ID令牌在我的站点上显示数据。 我将令牌保存在客户端的cookie中,当客户端访问网站时,它从cookie文件中获取令牌并将其发送到我的后端服务器

我想在重置密码时删除所有ID令牌,这样所有使用该用户名和密码登录的客户端都将断开连接


这个选项有效吗?如果是,你怎么做?他们在文档中似乎没有提到这一点。

当用户的密码重置、更改或相关电子邮件更新时,出于安全原因,Firebase Auth将使该用户的所有现有会话无效。从Firebase Auth后端的角度来看,这将有效地使该用户的ID令牌无效。刷新令牌也将无法发出新的ID令牌


我也同意斯科特的观点。您应该使用
currentUser.getIdToken()
来获取ID令牌,而不是自己存储它。此API负责在ID令牌过期时为您刷新该令牌。

当用户的密码重置、更改或相关电子邮件更新时,出于安全原因,Firebase Auth将使该用户的所有现有会话无效。从Firebase Auth后端的角度来看,这将有效地使该用户的ID令牌无效。刷新令牌也将无法发出新的ID令牌


我也同意斯科特的观点。您应该使用
currentUser.getIdToken()
来获取ID令牌,而不是自己存储它。此API负责在ID令牌过期时为您刷新ID令牌。

是否确实需要将ID令牌存储在cookie中?用户登录Firebase后,始终可以使用Firebase.auth.currentUser.getIdToken()检索其ID令牌。您还可以管理用户离开站点时Firebase身份验证状态的持久化方式(请参阅)。你还没有解释你的整个用例,但这两项可能让你在不使用任何cookie的情况下实现你想要的。这就是我当前系统的工作原理:我有firebase函数,可以监听我的网站上的GET登录输入请求。在他们使用get请求获得电子邮件和密码后,他们从后端登录用户,只向用户发送我选择显示的重要内容。我没有从客户端登录到firebase,登录发生在服务器端并发送到客户端。这就是我如何使用PHP将令牌发送到后端的方法。检查令牌并发送数据。我有点困惑。用户是否在web客户端上输入ID/密码,然后web客户端将ID/密码传递给PHP后端,然后PHP后端将ID/密码发送给Firebase函数?实际的Firebase身份验证发生在哪里?在PHP代码中还是在Firebase函数中?还是我完全误解了您的设置?身份验证是通过GET请求在firebase函数中进行的。之后,我使用一些PHP和另一个GET请求从函数中获取用户数据。是否真的需要将ID令牌存储在cookie中?用户登录Firebase后,始终可以使用Firebase.auth.currentUser.getIdToken()检索其ID令牌。您还可以管理用户离开站点时Firebase身份验证状态的持久化方式(请参阅)。你还没有解释你的整个用例,但这两项可能让你在不使用任何cookie的情况下实现你想要的。这就是我当前系统的工作原理:我有firebase函数,可以监听我的网站上的GET登录输入请求。在他们使用get请求获得电子邮件和密码后,他们从后端登录用户,只向用户发送我选择显示的重要内容。我没有从客户端登录到firebase,登录发生在服务器端并发送到客户端。这就是我如何使用PHP将令牌发送到后端的方法。检查令牌并发送数据。我有点困惑。用户是否在web客户端上输入ID/密码,然后web客户端将ID/密码传递给PHP后端,然后PHP后端将ID/密码发送给Firebase函数?实际的Firebase身份验证发生在哪里?在PHP代码中还是在Firebase函数中?还是我完全误解了您的设置?身份验证是通过GET请求在firebase函数中进行的。之后,我使用一些PHP和另一个GET请求从函数中获取用户数据。也许我没有很好地解释我的意图,请看一下我对Scott的回复。我假设,您将电子邮件/通行证传递给云函数端点,在那里您登录并将ID令牌返回给客户端。在这种情况下,同样的情况仍然存在:从Auth后端的角度来看,ID令牌将无效,但是如果不添加自己的密码重置处理程序来通知后端无效,就不可能在您的端轻松检测到这一点。了解有关如何构建自己的密码重置登录页的更多信息:问题是,ID令牌的寿命很短,我不知道是否可以删除令牌。当您说要“删除所有ID令牌”和“删除令牌”时,您的意思是使它们对Firebase无效吗?如果是这样的话,那么这就是正确的答案——每当密码被重置时,Firebase都会这样做。我试过了,这并没有使密码无效。我不认为我会使用他们的ID令牌,因为它们不会持续很长时间,而且不幸的是不会更新。这意味着如果我是对的,我需要自己创建并存储它们。也许我没有很好地解释我的意图,请看我对Scott的回复。我假设,您将电子邮件/通行证传递给云功能端点,在那里登录并将ID令牌返回给客户端。在这种情况下,同样的情况仍然存在:从身份验证后端的角度来看,ID令牌将无效,但如果不添加自己的密码重置处理程序来通知后端有关入侵的信息,则可能无法在您的端轻松检测到这一点