Firebase使用电子邮件/密码进行简单身份验证
我是Firebase的新手,我正在尝试使用电子邮件/密码设置一个简单的身份验证系统。最初的概念很简单:注册。然后,在登录后,您可以访问移动应用程序的其余部分 在过去,我可以用PHP在几分钟内完成设置。但对于Firebase,这已经成为一场我似乎无法赢得的战斗 使用Firebase网站上的light文档,我终于能够成功注册和验证一个用户。太好了 不幸的是,无论用户是否登录,他们仍然可以访问应用程序的其余部分。如何保护应用程序不受未经身份验证的用户的攻击 另外,如何将页面上提交的数据与经过身份验证的用户关联 我看过Firebase的文档。它缺乏认证的实际例子。它一直在引用Firefeed应用程序作为示例。我看了Firefeed的代码,认证系统似乎1)对于登录系统来说过于复杂,2)与新闻提要的联系过于复杂,无法作为一个实用的示例来学习 另一方面,也许我只是错过了一些明显的和基本的东西。如果有人能给我指出正确的方向,那就太好了。谢谢!:-)Firebase使用电子邮件/密码进行简单身份验证,firebase,firebase-security,Firebase,Firebase Security,我是Firebase的新手,我正在尝试使用电子邮件/密码设置一个简单的身份验证系统。最初的概念很简单:注册。然后,在登录后,您可以访问移动应用程序的其余部分 在过去,我可以用PHP在几分钟内完成设置。但对于Firebase,这已经成为一场我似乎无法赢得的战斗 使用Firebase网站上的light文档,我终于能够成功注册和验证一个用户。太好了 不幸的是,无论用户是否登录,他们仍然可以访问应用程序的其余部分。如何保护应用程序不受未经身份验证的用户的攻击 另外,如何将页面上提交的数据与经过身份验证的
(顺便说一句,我试着把这个问题发电子邮件给firebase-talk@googlegroups.com,正如Firebase网站上所建议的那样……但根据谷歌的回复信息,该组织似乎并不存在。)退一步说,值得注意的是,Firebase简单登录是为方便起见而在其上构建的一个抽象。如果愿意,您仍然可以使用自定义登录使用Firebase的现有身份验证 Firebase简单登录无需运行服务器进行身份验证。但是,没有一个与PHP示例类似的1对1模式,在PHP示例中,服务器将根据服务器上检测到的会话来管理请求访问,因为您的所有逻辑、模板等都存在于客户端代码中 在大多数情况下,客户端逻辑、模板、资产等都是静态的和公共的。您真正想要保护的是用户和应用程序数据,这就是Firebase身份验证(无论是使用简单登录还是自定义登录)的用武之地。Firebase身份验证本质上是令牌生成——获取确认的、可识别的用户数据,并将其安全地传递给Firebase,以便它不会被欺骗 Firebase数据树中不同路径的读/写访问权限由控制,允许您编写类似JavaScript的表达式来控制哪些客户端可以访问哪些数据 下面是一个例子: 假设您有一个用户列表,其中每个用户都由用户id键入, 例如
/users/
,您希望确保
登录用户可以读取/写入自己的数据。通过简单的登录,
这真的很容易
看着
在电子邮件/密码验证文档中,我们看到
安全规则中的auth
变量将包含多个字段
经过身份验证(包括id
)后,用户的唯一用户id。现在
我们可以编写安全规则:
{
"rules": {
".read": false,
".write": false,
"users": {
"$userid": {
".read": "auth != null && auth.uid == $userid",
".write": "auth != null && auth.uid == $userid"
}
}
}
}
这是怎么回事?Firebase身份验证(使用简单登录)
安全地生成了一个令牌,其中包含您的已验证用户数据
登录,该令牌数据将在您的安全规则中可用
通过连接的auth
变量。现在,为了一个客户
要读取或写入到/users/xyz
的连接,用户必须是
作为用户进行身份验证和身份验证xyz
上面的大部分内容都包含在文章中,但不可否认,这有点难以理解
回到最初的问题,如果您想在用户未经身份验证时从某些路径重定向,可以执行以下操作:
var ref = new Firebase(...);
var auth = new FirebaseSimpleLogin(ref, function(error, user) {
if (!user) {
// we're logged out, so redirect to somewhere else
} else {
// we're logged in! proceed as normal
}
});
希望有帮助 请注意:
登录现在是Firebase的核心功能。简单登录已被删除
此客户端的已弃用和文档现已在上提供
Github
有关更多信息,请参阅本页:
关于谷歌集团,请仔细检查您发送到的地址。在您上面的帖子中,它看起来是正确的,但是请注意,该组仍然处于活动状态,并且可以在处使用。我将其发送到以下地址(复制/粘贴):firebase-talk@googlegroups.com下面是谷歌的回复(也可以复制/粘贴):“我们写信是想让你知道你试图联系的团体(firebase talk)可能不存在,或者您可能没有向群中发布消息的权限。有关您无法发布消息的更多详细信息:“不确定为什么它不起作用,但正如您的链接所示,它显然存在。顺便问一下,我的问题被否决的原因是什么?您是否费心搜索此网站?这更多的是一个咆哮,而不是一个问题。尝试遵循这些指导原则谢谢,我感谢你花时间提供全面的回复。我会仔细检查一下,看看是否能取得一些进展。再次感谢@如果你认为这回答了你的问题,请考虑把它标记为帮助社区的答案: