【问题标题】:Firebase password validationFirebase 密码验证
【发布时间】:2016-05-08 09:45:12
【问题描述】:

我有一个正在尝试使用 firebase 创建的论坛。某些子论坛只有在用户知道密码的情况下才能访问。加入时,客户端取回子论坛的密码,然后检查输入的密码是否正确。

有没有办法在服务器端进行密码验证?

【问题讨论】:

  • 你是在做验证服务器端还是客户端?
  • 我目前正在检索客户端的密码,然后在用户点击提交时根据该密码检查输入。我宁愿将密码发送到 firebase 并获得布尔响应。
  • 我假设您知道如何从 firebase 获取用户数据。那你还需要什么?将输入值与获取的用户数据进行比较。这不是你想要的还是我错过了什么?
  • 我希望比较和验证发生在服务器端而不是客户端。
  • 发布您的代码,让更多人了解您真正想要什么......

标签: android firebase firebase-security


【解决方案1】:

我建议您使用不同的方法来解决此问题。我建议您不要提供密码,而是保留可以访问 firebase 中子论坛的用户列表(只有管理员应该能够写入此列表)并使用 firebase 安全规则来检查是否有人可以读取/写入子论坛基于该列表。

你的子论坛的规则看起来有点像这样:

"forums":{
      "$subforum_id": {
        ".read": "auth != null && root.child('subforums').child($subforum_id).hasChild(auth.uid)",
        ".write": "auth != null && root.child('subforums').child($subforum_id).hasChild(auth.uid)"
      }
    }

【讨论】:

    【解决方案2】:

    你的场景很古怪。您想取消用户名而只有密码。如果您不识别他们,您打算如何知道谁修改了论坛条目?

    无论如何,根据您的要求,您可以像下面这样在匿名用户想要访问论坛时冒充预先创建的用户 -

    1. 在 Firebase 中启用电子邮件身份验证。

    2. 对于每个论坛密码,使用这些值创建一个用户 -

      username: forumName@yoursite.com
      password: forumpassword
      

      记下它的 uid。

    3. 将相应的 uid 作为子“uid”属性添加到相应的论坛。

    4. 为受密码保护的论坛添加简单的安全规则 -

      "forums":{
        "$subforum_id": {
          ".read": "auth.uid == data.child('uid')",
          ".write": "auth.uid == data.child('uid')"
        }
      }
      
    5. 现在,当匿名用户想要访问论坛时,她必须提供密码,并且您需要将用户名硬编码为适合她尝试访问的论坛的用户名。这样,只要她知道密码,您就可以冒充匿名用户作为论坛用户。

    【讨论】:

    • 所以这是一个用户可以匿名表达问题的论坛。密码将在现实生活中给出,用户将使用他们的谷歌帐户注册并拥有他们可以选择的显示名称。论坛的加入和离开率很高,这就是为什么我不想保留需要版主更新的允许用户列表。
    • 建议不是强制用户,但由于您想使用 firebase 服务器端身份验证,您需要模拟一个有效用户,因此需要为每个私人论坛创建一个用户。
    • 是否可以同时使用他们的 google id 和假论坛帐户对多个用户进行身份验证?
    • 那么你有身份验证吗?如果您更详细地解释您的用户如何访问该网站,将会有所帮助。
    猜你喜欢
    • 2017-04-03
    • 1970-01-01
    • 1970-01-01
    • 2021-04-29
    • 2023-01-21
    • 2019-07-13
    • 2019-05-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多