firebase 以管理员身份从边缘功能访问子数据库数据库

xyhw6mcr  于 2023-02-13  发布在  其他
关注(0)|答案(1)|浏览(141)

我来自Firebase Function...在那里我可以使用Admin Library绕过所有安全规则从Function访问数据库?在supbase上我还没有找到这样做的方法,文档非常少。现在我使用以下代码作为请求函数的用户从function访问数据库:

const supabaseClient = createClient(
      Deno.env.get("SUPABASE_URL") ?? "",
      Deno.env.get("SUPABASE_ANON_KEY") ?? "",
      { global: { headers: { Authorization: req.headers.get("Authorization")! } } }
    );

但对于我的一个函数,我必须访问绕过所有策略,因为该函数是“管理”,当我删除此代码中的第三个参数行(这是唯一模糊的解释如何做到这一点,我发现)我得到错误:
验证应用程序错误:无效声明:在...处丢失子索赔
我还尝试将SUPABASE_ANON_KEY更改为SUPABASE_SERVICE_ROLE_KEY,同样的错误。

t40tm48m

t40tm48m1#

使用服务角色密钥可以绕过安全规则,请确保您具有有效的服务密钥角色。
您正在使用的密钥**Deno.env.get(“SUPBASE_ANON_KEY”)??**它具有匿名访问权限,不会绕过安全规则。

const supabaseClient = createClient(
Deno.env.get("SUPABASE_URL") ?? "",
Deno.env.get("SUPABASE_SERVICE_ROLE_KEY") ?? "",
Deno.env.get("SUPABASE_SERVICE_ROLE_KEY") ?? "",
{ global: { headers: { Authorization: `Bearer ${Deno.env.get("SUPABASE_SERVICE_ROLE_KEY")}` } } });

将**“SUPBASE_SERVICE_ROLE_KEY”**替换为的实际服务角色密钥值以绕过安全规则。

相关问题