使用电子邮件/密码进行Firebase简单验证

时间:2013-12-30 14:34:32

标签: firebase firebase-security

我是Firebase的新手,我正在尝试使用电子邮件/密码设置简单的身份验证系统。最初的概念很简单:你注册。然后,登录后,您可以访问移动应用程序的其余部分。

过去,我可以在几分钟内用PHP设置它。但是对于Firebase来说,这已经成为一场我似乎无法获胜的战斗。

使用Firebase网站上的轻量级文档,我终于能够成功注册并验证用户身份。大。

不幸的是,无论用户是否登录,人们仍然可以访问应用程序的其余部分。如何保护应用程序免受未经身份验证的用户的侵害?

另外,如何将页面上提交的数据与经过身份验证的用户相关联?

我查看了Firebase的文档。它缺乏实用的身份验证示例。它一直把我作为样本引用我的Firefeed应用程序。我看过Firefeed的代码,认证系统似乎1)对于登录系统来说过于复杂,2)过于错综复杂地与新闻提要相关联,这是一个值得学习的实际例子。

另一方面,也许我只是遗漏了一些明显和根本的东西。如果有人能指出我正确的方向,那将是伟大的。谢谢! : - )

(顺便说一句,我尝试将此问题通过电子邮件发送到firebase-talk@googlegroups.com,如Firebase网站上所建议的那样......但根据谷歌发布的退回消息,该群组似乎不存在。)

2 个答案:

答案 0 :(得分:8)

退一步,值得注意的是Firebase简单登录是为了方便而构建在Firebase Custom Login之上的抽象。如果您愿意,您仍然可以使用自定义登录功能将您现有的身份验证用于Firebase。

Firebase Simple Login无需您仅为身份验证运行服务器。但是,与PHP示例没有1对1并行,其中服务器将根据服务器上检测到的会话来管理请求访问,因为所有逻辑,模板等都存在于客户端代码中。

在大多数情况下,您的客户端逻辑,模板,资产等将是静态和公共的。您真正想要保护的是用户和应用程序数据,这就是Firebase身份验证(无论是使用简单登录还是自定义登录)的地方.Firebase身份验证本质上是令牌生成 - 获取已确认的,可识别的用户数据并将其安全地传递给Firebase让它无法被欺骗。

对Firebase数据树中不同路径的读/写访问权限由Firebase Security Rules管理,允许您编写类似JavaScript的表达式来控制哪些客户端可以访问哪些数据。

以下是一个例子:

  

假设您有一个用户列表,其中每个用户都按用户ID键入,   例如/users/<user-id>/<data>,并且您只想确保这一点   登录用户可以读/写自己的数据。使用简单登录,   这真的很容易!

     

查看After Authenticating   电子邮件/密码验证文档部分,我们看到了   我们的安全规则中的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进行身份验证和身份验证。

Security Quickstart中涵盖了上述大部分内容,但无可否认,有点难以理解。

回到初始问题,如果您想在未经过身份验证的情况下重定向某些路径,可以执行以下操作:

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
  }
});

希望有所帮助!

答案 1 :(得分:2)

请注意:

  

登录现在是Firebase的核心功能。简单登录已经   已弃用且此客户端的文档现已可用   Github上。

有关详细信息,请参阅此页面: https://www.firebase.com/docs/web/guide/user-auth.html