使用自定义身份验证时如何为 firebase 编写安全规则?

时间:2021-07-25 09:23:29

标签: django firebase firebase-realtime-database firebase-security

我正在使用 django 和 firebase 构建一个应用程序。我已经构建了我的自定义身份验证系统。而且我需要安全规则,以便只有我通过身份验证的人才能在数据库或存储中读/写。

{
  "rules": {
    ".read": true,
    ".write": true
  }
}

这些是我当前的规则,所以当我请求(在数据库上读取或写入)时,它们是一种传递令牌的方法,该令牌首先被检查。像 ->

{
  "rules": {
    ".write": "isAuthorized == true",
    ".read": "isAuthorized == true"
  }
}

当向数据库发出请求时,例如 - db.child('test').get() 我传递了这个 isAuthorized bool

感谢任何帮助,或者您可以提出更改建议。

1 个答案:

答案 0 :(得分:2)

如果您不使用 Firebase Authentication,则无法仅根据您的身份验证方法使用安全规则。您必须使用自己的方式对用户进行身份验证,授予他们可以使用 Admin SDK 生成的 custom token,然后使用该令牌通过 Firebase 身份验证登录。因此,从技术上讲,您不仅使用自己的方式对用户进行身份验证,而且还使用 Firebase 身份验证将他们登录到您的网络应用中。

身份验证流程如下:

  1. 用户输入他们的凭据
  2. 您的服务器对它们进行身份验证并生成自定义令牌
  3. 令牌被发送回客户端,他们使用 signInWithCustomToken() 方法登录。

如果您根本不想实现这一点,那么唯一可行的方法是通过将安全规则设置为 false 并通过您的服务器路由所有请求来禁用直接访问您的数据库。对于每个请求,检查用户是否有权访问他们手动请求的资源并为其提供服务。