【问题标题】:How the linkWithCredential works? How does it work with Rules?linkWithCredential 是如何工作的?它如何与规则一起使用?
【发布时间】:2016-10-02 02:56:26
【问题描述】:

我找到了这个documentation,它解释了如何将匿名用户与新注册用户联系起来,但我不明白它是如何工作的。

从解释中还找到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
       -- .......

with rule:只有合适的UserId才能访问购物车

"rules": {
   "shoppingCart" {
       "$userUid": {
            ".read": "auth.uid == $userUid"
       }
   }
}
  1. 结帐前,用户“强制”注册/或登录,AuthCredential 然后被检索,然后linkWithCredential 被调用。用户比使用新的用户 UID,例如 REGISTERED-USER-UID

问题是,每当客户端代码查询shoppingCart/REGISTERED-USER-UID时,它会检索到shoppingCart/ANONYM-USER-UID的项目列表吗?规则会允许吗?

如果应用更复杂的规则,例如,规则变为 -- 只有合适的 UserId 才能访问购物车,但 userUid 不能在 blackList child

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

有了这样的逻辑限制,它会成功返回列表吗?

【问题讨论】:

    标签: android firebase firebase-authentication firebase-security


    【解决方案1】:

    我认为您对匿名用户登录然后将其与新的身份验证凭据链接的流程有点困惑。这是我所经历的。

    当用户以匿名身份登录时,系统会分配一个唯一 ID。 现在,当用户决定使用一些新的身份验证凭据进行注册时,所发生的只是之前在匿名登录时间被分配或 链接这些新凭据。

    所以实际上没有创建新的 UID,你可以开始了。

    如果此信息有帮助,请告诉我。

    【讨论】:

    • 谢谢你解释了很多
    • 尽管值得指出的是,您不会从 google 获得名字和姓氏并将它们存储在匿名用户身上。您可能需要做一些工作来更新名称。
    猜你喜欢
    • 2019-07-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-05
    • 2013-02-09
    相关资源
    最近更新 更多