在 Firebase-Realtime Database 上使用啥规则让用户注册和登录?
Posted
技术标签:
【中文标题】在 Firebase-Realtime Database 上使用啥规则让用户注册和登录?【英文标题】:What rules to use on Firebase-RealtimeDatabase to let users register and login?在 Firebase-Realtime Database 上使用什么规则让用户注册和登录? 【发布时间】:2019-06-04 11:14:03 【问题描述】:为了让 android 用户通过我的应用注册和登录,我设置了 .read 和 .write 为 true。我的问题是任何人都可以访问用户 JSON 文件,因为它是 public。如何限制访问只能通过应用和 Firebase 控制台访问数据库?以下是规则:
"rules":
".read": true,
".write": true
【问题讨论】:
【参考方案1】:使用以下规则:
"rules":
".read": "auth != null",
".write": "auth != null"
您将仅向经过身份验证的用户授予 read
和 write
访问权限。更多信息请查看Firebase security rules的官方文档。
根据您的评论,您应该验证执行操作的用户是否实际上是经过身份验证的用户。例如,假设您只希望经过身份验证的用户能够访问他们的帐户,则需要以下规则:
"rules":
"users":
"$uid":
".read": "$uid === auth.uid",
".write": "$uid === auth.uid"
【讨论】:
如果我使用这些规则,我会收到以下消息:“您的安全规则不安全。任何经过身份验证的用户都可以窃取、修改或删除您数据库中的数据。” 在这种情况下,您应该明确地实现Firebase authentication 并使用我更新的答案中的规则。 对不起,我对那个重复的 if 不好。 @AndréKool 从 Firestore 选项卡复制并粘贴它。刚刚更新了我的答案。谢谢指正。 如果您对此规则有疑问,请尝试删除“用户”部分。它帮助了我。【参考方案2】:这取决于你的项目情况如何工作,如果你希望所有经过身份验证的用户都可以读取所有用户的数据,但不能写入其他用户的数据库,这必须是规则。当前用户只能写入自己的数据库
"rules":
"users" :
".read" : "auth != null",
"$user_id" :
".write" : "auth != null && $user_id === auth.uid"
,
下面的规则是:读写你自己的数据库(除了当前用户,没有人可以读写)
"rules":
"users" :
"$user_id" :
".read" : "auth != null && $user_id === auth.uid",
".write" : "auth != null && $user_id === auth.uid"
,
【讨论】:
以上是关于在 Firebase-Realtime Database 上使用啥规则让用户注册和登录?的主要内容,如果未能解决你的问题,请参考以下文章
could not make a database connection using datab
Installation failed with message INSTALL_FAILED_UPDATE_INCOMPATIBLE: Package com.datab.cn signatures
java 保持Firebase实时数据库连接最小化(https://livinglifetechway.com/keep-your-firebase-realtime-database-connect
TypeError: ‘Collection‘ object is not callable. If you meant to call the ‘insert‘ method on a ‘Datab