1

我發現這個documentation解釋瞭如何鏈接匿名用戶和新的註冊用戶,但我無法理解它是如何工作的。linkWithCredential如何工作?它如何與規則一起工作?

從還發現here的解釋,我有一個大的畫面如下圖所示(請糾正我,如果我錯了):

  1. 用戶登錄匿名:有userUid(只是舉例)ANONYM-USER-UID
  2. 用戶比數據如下圖所示添加到購物車:

數據

-- shoppingCart 
    -- ANONYM-USER-UID 
     -- <push-id> 
      -- itemUid: <item-uid> 
      -- count: 2 
     -- <push-id> 
      -- itemUid: <other-item-uid> 
      -- count: 1 
    -- OTHER-USER-UID 
     -- ....... 

與規則:只有適當用戶ID可以訪問購物車

"rules": { 
    "shoppingCart" { 
     "$userUid": { 
      ".read": "auth.uid == $userUid" 
     } 
    } 
} 
  • 結帳之前,用戶 「被迫」 註冊/或登錄,AuthCredential則檢索然後打電話給linkWithCredential。用戶不是使用新userUID例如REGISTERED-USER-UID
  • 的問題是,每當客戶端代碼查詢shoppingCart/REGISTERED-USER-UID將它取回的shoppingCart/ANONYM-USER-UID項目列表?規則是否允許?

    如果應用於更復雜的規則,例如,規則變得 - 只有適當的用戶ID可以訪問購物車,但userUid絕不能在黑名單孩子

    "rules": { 
        "shoppingCart" { 
         "$userUid": { 
          ".read": "auth.uid == $userUid && root.child('blackList').child($userUid).val() == false" 
         } 
        } 
    } 
    

    像這樣的邏輯限制,它會成功返回列表嗎?

    回答

    3

    我覺得你對匿名用戶登錄然後將其與新的身份驗證憑證關聯起來有些困惑。這是我所經歷的。

    當用戶以匿名身份登錄時,系統分配一個唯一的ID。現在,當用戶決定註冊一些新的身份驗證憑證時,發生的所有情況是在匿名登錄時生成的先前UID被分配或鏈接這些新憑據。

    所以在現實中沒有新的UID創建,你是好去。

    請讓我知道這個信息是否有幫助。

    +0

    謝謝你解釋了很多 – ktutnik