簡體   English   中英

Flutter 使用 Cloud Firestore 和 Firebase Auth 存儲用戶數據

[英]Flutter store users data with Cloud Firestore and Firebase Auth

我在Cloud Firestore中有一組“用戶”,我正在使用Firebase Auth對我的應用用戶進行身份驗證,如下所示:

  1. 用戶在移動應用程序中進行身份驗證(例如使用 Google)。
  2. 我驗證“用戶”集合中沒有與經過身份驗證的用戶的 UID 相對應的文檔。
  3. 如果“用戶”中不存在該文檔,我將使用用戶的 UID 創建一個新文檔。

這是我的問題:這個 model 或其他類型是否存在安全問題?

我對 Google 文檔感到困惑,因為它說用戶的 UID 對 Firebase 項目是唯一的,但不應用於向后端服務器驗證我的用戶。 它還說,在這種情況下,我應該使用 FirebaseUser.getToken () 但該令牌可以更改,因此它將在我的數據庫中創建一個新用戶。

所以,我的第二個問題是:你應該什么時候使用那個令牌? 請給我一個例子。

謝謝您的幫助。

用戶身份

您可以使用 google 生成的 user_id 以供將來參考。 只要用戶已經在數據庫中,對於給定的用戶 email 或身份驗證類型,這將永遠不會改變。

示例:如果用戶使用 google federated login 使用 user1@example.com 登錄,則用戶記錄將保存在 Firebase 和 USER_ID( ABFDe12cdaa2... )將被分配(您可以在 URL 中使用此 id 來查看用戶profile 等它有 32 個字符長(我不確定這里到底是什么)。現在,如果用戶嘗試使用相同的電子郵件(user1@example.com)再次注冊,那么它會拉取之前的記錄ABFDe12cdaa2...如果您從 firebase 數據庫中刪除 user1@example.com(Firebase 為您的項目維護自己的用戶數據庫,With 具有有限數量的用戶屬性)。然后用戶嘗試再次登錄,然后生成新的 USER_ID .

現在令牌

由於您的 USER_ID 是公開的,因此每個人都可以看到。 它不用於身份驗證。

因此,您需要生成令牌(這是更長的用戶 ID)以通過 Firebase 以編程方式進行身份驗證。 它的令牌是臨時的並且特定於用戶。 它將在一段時間后過期(您可以在創建令牌時定義該時間)。 刷新令牌用於獲取新令牌。

編寫此答案時,我沒有任何代碼示例。 我將使用代碼示例進行更新,如果我找到任何。

希望我澄清了你的一些問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM