如何使用我自己的身份验证服务限制 firebase 存储访问

How to restricts firebase storage access with my own authentication service

我在我的应用程序中使用了 firebase 存储,并且我正在使用我自己的用户名和密码身份验证服务,我已将规则更改为 public 以便我可以上传和下载数据,但现在我它给了我这个警告

Your security rules are set to public. Anyone can read or write to your storage bucket

如何在不使用任何 firebase 登录或身份验证方法的情况下保护应用数据??

Firebase 规则适用于读取和写入

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

您可以将变量设为 true,这样其他人可以读取数据,但也可以写入您的数据。因此您的数据是安全的。 希望你明白了

只为授权用户授予读写权限,如下所示,

"rules": {
  ".read":  "auth != null",
  ".write": "auth != null",
 }
 }

现在您不会收到任何警告。

由于您使用自己的服务来验证用户身份,我可以想到两个选项,都涉及管理 SDK。

选项 1:创建自定义令牌

假设您在自己的服务器上通过服务 运行 对用户进行身份验证,您可以使用 Firebase Admin SDK 稍微编辑该系统以包含自定义令牌。基本上,如果用户提供的详细信息与您的服务期望的详细信息相匹配,您可以 return 一个自定义令牌,firebase 可以使用它来对用户进行身份验证。然后您可以像往常一样设置 Firebase 安全规则。这是我推荐的做法。

Create custom tokens

选项 2:完全限制访问和 request/upload 数据通过您的服务器

您可以将安全规则设置为 false 以限制所有人访问。 Admin SDK 应该忽略这些规则,因为它是一个管理实例。然后您可以让您的用户将文件(或下载请求)上传到您的服务器。然后,您的服务器将使用 Admin SDK 从 Firebase 请求文件并将它们发回给用户。

Firebase Admin SDK