gpt4 book ai didi

ios - 未经身份验证的用户名测试数据库 [Firebase/Swift 3]

转载 作者:行者123 更新时间:2023-11-28 12:20:22 26 4
gpt4 key购买 nike

我目前的问题是,当用户想要在我的应用程序(使用 Firebase)上创建帐户时,会发生以下错误:

2017-07-12 21:57:05.958 GeneralMessage[8525] [Firebase/Database][I-RDB038012] Listener at /users failed: permission_denied

我意识到发生错误是因为用户试图在未登录帐户(经过身份验证)的情况下从数据库中读取数据。问题还在于,用户在测试名称是否被占用时(在创建帐户之前)永远不会通过身份验证。

我知道您可以编辑实时数据库规则以允许未经身份验证的用户访问数据库,但我也了解到这是一个安全隐患,只能在测试期间使用。

我的想法是在用户单击“创建帐户”按钮时临时对用户进行身份验证,但我也不确定该怎么做。

感谢您的帮助:)

最佳答案

如果您希望未经身份验证的用户能够读取您的部分数据库,则需要修改您的安全规则以允许这样做。暂时无法针对特定应用实例执行此操作,因为这需要识别每个应用实例 - 就像用户一样。

我知道两种方法:

  1. 首先使用匿名身份验证让用户登录
  2. 将用户名存储在树的未 protected 部分

首先使用匿名身份验证登录用户

或者,您可以先使用匿名身份验证让用户登录:

Auth.auth().signInAnonymously() { (user, error) in
// ...
}

这只能部分保护数据访问:由于用户不证明自己的身份,任何人仍然可以相对容易地访问数据。这就是为什么我建议限制他们可以访问的数据...

将用户名存储在树的未 protected 部分

这种方法很常见:您希望用户名公开可读,因此您将其存储在数据库的单独部分。

usernames
"T. Dess": 8295647
"Frank van Puffelen": 209103

然后使用您的安全规则:

{
"rules": {
"users": {
".read": "auth !== null",
"$uid": {
".write": "auth.uid === $uid"
}
},
"usernames": {
".read": true
}
}
}

根据这些规则:

  • 任何人都可以阅读用户名
  • 任何经过身份验证的用户都可以阅读用户资料
  • 每个登录用户只能修改自己的用户资料

关于ios - 未经身份验证的用户名测试数据库 [Firebase/Swift 3],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45057380/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com