使用Firebase密码保护页面

时间:2019-02-01 21:37:58

标签: javascript firebase firebase-realtime-database firebase-authentication

我正在使用Firebase构建CMS,但正在努力评估我的要求是否可行,或者是否缺少某些东西。

我需要的是仅对页面进行密码保护的功能,并记住该浏览器具有访问权限。需要一个完整的用户帐户(使用内置的auth)才能编辑页面的内容,但是只需要密码即可查看它。

我知道我可以在电子邮件中使用身份验证流,但是我正在寻找编辑器,以便能够创建仅用于查看的密码。

这可能吗,还是我应该在其他地方看看?

4 个答案:

答案 0 :(得分:5)

我通常这样做的方式有点像杰里米的答案,但是更简单。

当用户进入页面时,您要求用户输入密码,并将该密码存储在本地(用于重新加载)。

然后,将数据存储在数据库中包含密码的路径下。假设您的密码为geheim,则可以将数据存储在以下位置:

data: {
  geheim: {
    value: "This is the secret value"
  }
}

现在你有这样的规则,保护您的数据库:

{
  "rules": {
    ".read": false,
    "data": {
      "geheim": {
        ".read": true
      }
    }
  }
}

现在某人只能读取在数据/data/geheim,如果他们知道的整个路径。因此,您将在代码中输入data部分,但要求他们输入geheim作为密码。然后,将侦听器附加到:

firebase.database().ref("data").child(password).once("value", function(snapshot) {
  console.log(snapshot.val());
});

如果用户输入了password的正确值,则会读取该值。

答案 1 :(得分:1)

这绝对有可能,但是正如道格的回答所表明的那样,您将不得不在正常手段之外进行。在我的头顶上,我要做到这一点的方法是...

  • 用户输入密码时,会将密码存储在其本地存储中。
  • 在页面加载或输入密码时...从本地存储中提取密码
  • 向Firebase云功能发出请求,确保包括刚从本地存储中检索到的密码,以及它正在请求内容的页面
  • Firebase云功能验证密码
  • Firebase云功能检索特定页面的数据
  • Firebase云功能返回所述数据
  • 像往常一样在前端加载数据

您已经确定,应该使用内置的Firebase身份验证进行内容编辑。

答案 2 :(得分:0)

Firebase身份验证仅处理经过身份验证的用户帐户。它不处理内容的简单密码保护。

答案 3 :(得分:0)

我绝对建议弗兰克回答,因为它很简单而且有效。顺便说一句,这个故事的寓意是您使用Firebase数据库存储仅查看密码,但是,如果您由于需要强大的仅查看密码系统而需要复杂的身份验证,那么身份验证产品提供了可以与现有身份验证系统集成的自定义身份验证方法(例如fb登录)。显然,它需要一个服务器端实现,该实现是一个使用密码的代码,检查其是否有效并将令牌发送回Auth系统。
以下是更多详细信息:https://firebase.google.com/docs/auth/web/custom-auth

相关问题