限制火力地堡读取到只有我自己

限制火力地堡读取到只有我自己

问题描述:

/写访问我有它运行静态网站:限制火力地堡读取到只有我自己

config = 
    apiKey: "HIDDEN" 
    authDomain: "HIDDEN" 
    databaseURL: "HIDDEN" 
    storageBucket: "" 

firebase.initializeApp(config) 

在浏览器(它编译成javacript)与火力地堡的服务器进行身份验证。

我困惑吗?这是从浏览器使用Firebase进行身份验证的有效方法吗?我从他们的“web”教程中获得了代码,所以我认为它是。

现在,我需要配置我的Firebase数据库规则,以便我和只有我可以读取&写它。

我怎么能做到这一点?这个例子足够吗?

这是允许读/写认证的用户仅

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

firebase.initializeApp(config)不会对您进行身份验证,它只是在Firebase服务器上标识您的项目。这是相当于你必须知道你的家庭住址才能知道下班后要去哪里。了解地址是先决条件,但仅限于获取访问权限。

如果您想限制数据访问“只有你”,这意味着你必须首先识别你自己的Firebase。这你用Firebase Authentication做。例如,要请用电子邮件+密码,您会怎么做:

firebase.auth().signInWithEmailAndPassword(email, password) 

阅读documentation for email+password authentication为全面步骤。

一旦你通过身份验证,你会得到一个唯一的ID;一个所谓的uid。您可以在Firebase控制台的“身份验证”标签中找到uid

the Firebase Auth console showing a user's information

有了这个uid您可以控制对数据的访问(包括数据库和存储)。所以,如果你从控制台复制您的uid并将其添加到您的安全规则,只有你(或某人谁知道你的电子邮件+密码)可以访问数据库:

{ 
    "rules": { 
    ".read": "auth.uid == 'e836f712-4914-41df-aa80-5ade6b8b7874'", 
    ".write": "auth == 'e836f712-4914-41df-aa80-5ade6b8b7874'" 
    } 
} 

请注意,我说我自己的uid之一在这个片段中。就像知道您的API密钥或数据库URL不存在安全风险一样,我也不知道我的uid。知道我是Frank van Puffelen,user:209103 Stack Overflow,并不意味着你可以冒充我。

+0

谢谢,弗兰克,很高兴知道您的团队正在关注新手,我很高兴能够开始使用Firebase进行构建。 –

+0

我期待看到你建立Max! –

+1

我知道评论意思是说在这里感谢,但@FrankvanPuffelen这个答案帮助了我这么多!我一直在寻找这些基本信息,出于某种原因,基本信息总是从Firebase文档中删除。谢谢! – Adam

在你的问题的规则将允许任何身份验证的用户读取和写入到数据库中的任何键给定的例子。如果你愿意,为发展宗旨,以配置单个用户,并限制到只有该用户访问,你可以使用以下规则:

{ 
    "rules": { 
    ".read": "auth !== null && auth.uid === '<your-uid>'", 
    ".write": "auth !== null && auth.uid === '<your-uid>'" 
    } 
} 

哪里<your-uid>是与您希望用户用户UID登录 - 您可以在Firebase控制台的Auth下找到它(如果您尚未这样做,您也可以创建一个用户)。

通常情况下,Firebase将进行配置,以便用户可以创建帐户,并使用更细的规则来为用户提供对数据库特定部分的读写权限。