在云函数中设置的自定义声明不会显示在firebase存储的云规则中



我正在尝试使用以下内容设置自定义声明:

admin.auth().setCustomUserClaims(user.uid, {['hguwukrpyrwxerqr679p']: true});

其中CCD_ 1是消防仓库数据库中对象的唯一ID。这个对象在创建时有自己的bucket。此bucket具有以下安全规则:

rules_version = '2';
service firebase.storage {
match /b/{bucket}/o {
allow read: if request.auth.token[bucket];
allow write: if false;
}
}

不幸的是,这不起作用,我得到了一个403错误代码。我不知道为什么,我已经尝试在firebase storage的规则操场上使用上面的用户来模拟请求。令牌部分根本不显示任何自定义声明,但它应该显示,不是吗?

我已经做了好几个小时了,尝试了各种方法,甚至在云函数中手动设置声明。有人能为我指明正确的方向吗?或者就如何正确调试这个问题给出提示吗?通过执行调试云功能时

console.log(Object.keys(await admin.auth().getUser(uid).customClaims));

它显示了正确的内容。

存储在bucket根目录中的规则以某种方式被忽略。

rules_version = '2';
service firebase.storage {
match /b/{bucket}/o {
allow read: if request.auth.token[bucket];
allow write: if false;
}
}

相反,应该使用通配符

rules_version = '2';
service firebase.storage {
match /b/{bucket}/o {
match /{somePath=**} {
allow read: if request.auth.token[bucket];
allow write: if false;
}
}
}

我不确定这是否应该被接受为一个答案,因为它只与问题部分相关。

相关内容

  • 没有找到相关文章