我有一个运行的静态网站:
config =
apiKey: "HIDDEN"
authDomain: "HIDDEN"
databaseURL: "HIDDEN"
storageBucket: ""
firebase.initializeApp(config)
在浏览器中(它被编译为 javacript)以通过 Firebase 的服务器进行身份验证。
我在这里很困惑吗?这是从浏览器使用 Firebase 进行身份验证的有效方法吗?我从他们的“网络”教程中获得了代码,所以我认为它是。
现在,我需要配置我的 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 控制台的 Auth 选项卡中找到您的 uid。
使用此 uid,您可以控制对数据(数据库和存储)的访问。因此,如果您从控制台复制您的 uid 并将其添加到您的安全规则中,则只有您(或知道您的电子邮件+密码的人)可以访问数据库:
{
"rules": {
".read": "auth.uid == 'e836f712-4914-41df-aa80-5ade6b8b7874'",
".write": "auth == 'e836f712-4914-41df-aa80-5ade6b8b7874'"
}
}
请注意,我在此代码段中添加了我自己的一个 uid。就像知道您的 API key 或数据库 URL 不是安全风险一样,知道我的 uid 也不是。知道我是 Frank van Puffelen,Stack Overflow 上的 user:209103,并不意味着您可以冒充我。
关于javascript - 将 Firebase 读/写访问权限仅限于我自己,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39133918/
类classAprivatedeffooputs:fooendpublicdefbarputs:barendprivatedefzimputs:zimendprotecteddefdibputs:dibendendA的实例a=A.new测试a.foorescueputs:faila.barrescueputs:faila.zimrescueputs:faila.dibrescueputs:faila.gazrescueputs:fail测试输出failbarfailfailfail.发送测试[:foo,:bar,:zim,:dib,:gaz].each{|m|a.send(m)resc
我有一个包含模块的模型。我想在模块中覆盖模型的访问器方法。例如:classBlah这显然行不通。有什么想法可以实现吗? 最佳答案 您的代码看起来是正确的。我们正在毫无困难地使用这个确切的模式。如果我没记错的话,Rails使用#method_missing作为属性setter,因此您的模块将优先,阻止ActiveRecord的setter。如果您正在使用ActiveSupport::Concern(参见thisblogpost),那么您的实例方法需要进入一个特殊的模块:classBlah
我正在使用Sequel构建一个愿望list系统。我有一个wishlists和itemstable和一个items_wishlists连接表(该名称是续集选择的名称)。items_wishlists表还有一个用于facebookid的额外列(因此我可以存储opengraph操作),这是一个NOTNULL列。我还有Wishlist和Item具有续集many_to_many关联的模型已建立。Wishlist类也有:selectmany_to_many关联的选项设置为select:[:items.*,:items_wishlists__facebook_action_id].有没有一种方法可以
大家好,我正在尝试设置一个开发环境,并且我一直在关注以下教程:Linktotutorial我做得不是很好,除了最基本的版本控制内容外,我对终端命令没有任何实际经验。我点击了第一个链接并尝试运行source~/.bash_profile我得到了错误;mkdir:/usr/local/rbenv/shims:权限被拒绝mkdir:/usr/local/rbenv/versions:权限被拒绝现在每次我加载终端时都会出现错误。bash_profile的内容;exportPATH=/usr/local/rbenv/bin:$PATHexportRBENV_ROOT=/usr/local/rbe
我想从then子句中访问case语句表达式,即food="cheese"casefoodwhen"dip"then"carrotsticks"when"cheese"then"#{expr}crackers"else"mayo"end在这种情况下,expr是食物的当前值(value)。在这种情况下,我知道,我可以简单地访问变量food,但是在某些情况下,该值可能无法再访问(array.shift等)。除了将expr移出到局部变量然后访问它之外,是否有直接访问caseexpr值的方法?罗亚附注我知道这个具体示例很简单,只是一个示例场景。 最佳答案
我理解(我认为)Ruby中类变量和类的实例变量之间的区别。我想知道如何从该类外部访问该类的实例变量。从内部(即在类方法中而不是实例方法中),它可以直接访问,但是从外部,有没有办法做MyClass.class.[@$#]variablename?我没有任何具体原因要这样做,只是学习Ruby并想知道是否可行。 最佳答案 classMyClass@my_class_instance_var="foo"class上述yield:>>foo我相信Arkku演示了如何从类外部访问类变量(@@),而不是类实例变量(@)。我从这篇文章中提取了上述内
我试图在我的网站上实现使用Facebook登录功能,但在尝试从Facebook取回访问token时遇到障碍。这是我的代码:ifparams[:error_reason]=="user_denied"thenflash[:error]="TologinwithFacebook,youmustclick'Allow'toletthesiteaccessyourinformation"redirect_to:loginelsifparams[:code]thentoken_uri=URI.parse("https://graph.facebook.com/oauth/access_token
我遇到了一个非常奇怪的问题,我很难解决。在我看来,我有一个与data-remote="true"和data-method="delete"的链接。当我单击该链接时,我可以看到对我的Rails服务器的DELETE请求。返回的JS代码会更改此链接的属性,其中包括href和data-method。再次单击此链接后,我的服务器收到了对新href的请求,但使用的是旧的data-method,即使我已将其从DELETE到POST(它仍然发送一个DELETE请求)。但是,如果我刷新页面,HTML与"new"HTML相同(随返回的JS发生变化),但它实际上发送了正确的请求类型。这就是这个问题令我困惑的
是否有self验证的问题列表。看着那个,我可以确定我知道。我应该复习一下。在学习的过程中,我列了一个这样的list,但它只包含我在某处听说过的项目。我需要一段时间才能找到新的东西。 最佳答案 以下是针对ruby和Rails的一些测试列表。证书名称:RubyonRails谁提供:oDeskIncorporation认证费用:免费网站:https://www.odesk.com/tests/985?pos=0证书名称:RubyonRails提供者:Techgig.com(TimesBusinessSolutionsLimited(T
是否有可能以某种方式访问Class.new范围内的a?a=5Class.new{defb;aend}.new.b#NameError:undefinedlocalvariableormethod`a'for#:0x007fa8b15e9af0>#:in`b' 最佳答案 即使@MarekLipka的回答是正确的——改变变量范围总是有风险的。这是可行的,因为每个block都带有创建它的上下文,因此您的局部变量a突然变得不那么局部了——它变成了一个“隐藏的”全局变量:a=5object=Class.new{define_method(