进行注册身份验证并将其存储在数据库中的正确方法是啥?

Posted

技术标签:

【中文标题】进行注册身份验证并将其存储在数据库中的正确方法是啥?【英文标题】:what is the correct way to make signup Auth and store it in database?进行注册身份验证并将其存储在数据库中的正确方法是什么? 【发布时间】:2020-05-08 07:36:03 【问题描述】:

我有三个屏幕:

    注册 登录 主页

现在,在注册时,我有一些文本字段和个人资料图片要存储。 我的问题是如何以及如何正确存储注册屏幕中的数据,然后使用这些数据在登录屏幕中进行身份验证。

目前,我正在使用来自 firebase 的实时数据库来存储数据以及电子邮件和密码验证。 但实时数据库的规则是这样的:


"rules": 
".read": true,
".write": true
  
 

但我想使用这条规则:


"rules": 
".read": "auth != null",
".write": "auth != null"
   

告诉我这样做的正确方法是什么?

【问题讨论】:

【参考方案1】:

您可以使用此链接Authenticate with Firebase using Password-Based Accounts on android

最好的方法是在用户注册时。你用上面的代码来做。 第一次认证成功后。

您可以使用 FIrebaseUser.getUId 来获取特定用户的唯一标识符,并将其用作数据库中的用户键。

在你的databaseRerence中你可以像下面这样保存用户的数据。

FirebaseDatabase.getInstance().getReference().child(FirebaseUser.getUID).setValue(USERDATA)

这里的 USERDATA 是一个代表用户数据的 pojo,例如姓名、地址、电话等

我总是以能够控制用户流程的方式来构建我的应用程序。

    当用户打开我的应用程序时会打开一个初始屏幕,我会检查用户是否已经在之前的进程中通过了身份验证。

    如果 firebaseAuth.getCurrentUser 返回一个对象,我知道该用户已注册并且已经登录,所以我会将他转发到主页。

    如果它返回 null,那么我知道用户可能已注销或未注册。在那种情况下,我只是将他发送到您的案例登录中的登录屏幕。

    如果没有注册,他们将无法进入主页,因此您重定向 他们到注册屏幕。

希望对您有所帮助。如果您使用这种方法没有成功。不要担心社区得到了你。

【讨论】:

还有一个问题:我在注册屏幕上有一张个人资料图片,存储在 firebase 存储中,我是否还需要将该图片的参考存储在数据库中?

以上是关于进行注册身份验证并将其存储在数据库中的正确方法是啥?的主要内容,如果未能解决你的问题,请参考以下文章

使用 ASP.NET Core 3 进行 SPA 身份验证的正确方法是啥?

使用 APIRequestFactory 测试基于令牌的身份验证的正确方法是啥?

使用 JWT 的正确方法是啥?

存储令牌和身份验证状态的安全方法是啥?

从sql列中拆分数据并将其保存在sql存储过程中的另一个表中的最有效方法是啥[重复]

API 身份验证流程