在 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.writetrue。我的问题是任何人都可以访问用户 JSON 文件,因为它是 public。如何限制访问只能通过应用和 Firebase 控制台访问数据库?以下是规则:


    "rules": 
        ".read": true,
        ".write": true
    

【问题讨论】:

【参考方案1】:

使用以下规则:


  "rules": 
      ".read": "auth != null",
      ".write": "auth != null"
  

您将仅向经过身份验证的用户授予 readwrite 访问权限。更多信息请查看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

FPGA开平方的实现

Firebase 实时规则

TypeError: ‘Collection‘ object is not callable. If you meant to call the ‘insert‘ method on a ‘Datab