如何通过Flask后端(React前端)从Firestore检索用户ID



我是身份验证新手!我正在构建一个用户可以登录的网络应用程序,每个用户在网络应用程序中显示的数据都不同。我使用Reactjs作为Firebase身份验证的前端。用户登录我的web应用程序后,我会将他们的用户ID(UID(和其他信息存储到Firestore中。我有一个集合usersCollection,其中每个文档都标有UID。对于后端,我使用Flask作为一个带有Postgres数据库的REST API,但我不在那里存储用户凭据(UID、密码等(

对于我的一些后端函数,我需要根据登录的用户来更改输出,但我不确定如何检索当前用户的UID。我可以发出axios请求,将当前用户的UID从前端发送到后端,所以我尝试了两种方法:

  1. 将axios请求输出保存为全局变量-这导致了像runtimeerror: working outside of application context.这样的Flask错误,我认为这不是最好的解决方案
  2. 对于前端向后端发出的每个GET请求(每次有一个函数的输出根据用户而更改(,我都会将UID作为参数传递,这会导致延迟问题

从后端向Firestore请求当前UID的最简单方法是什么?

是否建议这样构建我们的前端、后端、数据库和身份验证?或者有没有一种更简单的方法或更好的系统来应对我们的情况(JWT?(?我们首先选择了Firebase身份验证,因为我们使用的是React MUI模板,该模板已经为我们设置了Firebase

提前谢谢!如果需要,很乐意提供更多信息!

我不知道reactjs,但我对flutter(iOS/Android应用程序(有相同的设置。

我所做的和效果良好的是:

  1. 针对firebase验证您的客户端(看起来您已经实现了(
  2. 从火球反应中提取idToken
  3. 将idToken发送到您的flask后端,后者将验证id令牌(见下文(
  4. 在flask后端,从flask_loginlogin_user()登录用户。这将创建一个cookie会话,该会话将在响应标头中发送回客户端
  5. reactjs客户端存储cookie,并需要将其附加到每一个后续的API请求中(这可能是reactjs的开箱即用,但对于flutter,我需要一些自定义代码(

至于令牌验证,您可以…

  • 使用python sdk
  • 使用jwt库,如pyjwt,请参阅文档

有一个烧瓶firebase,它可以很好地进行令牌验证。我写了一篇博客文章,举了一个如何使用它的例子。

最新更新