我正在努力应对 Firestore 安全规则。我想检查需要替换功能的值,即电子邮件地址。我可以在一般安全文档中找到一些文档,但这似乎不适用于 Firestore。
例如这有效:
allow write: if resource.data.members.data[(request.auth.token.email)] in ["admin"];
但这不是(并且我相应地更改了成员对象中的键):
allow write: if resource.data.members.data[(request.auth.token.email.replace('.' , ',')] in ["admin"];
另一种选择是有办法在查询地址中使用点,这样就不必像这样替换它们:
var emailSanitized = email.replace('.' , '.');
db.collection('someCollection').where('members.' + emailSanitized, '==', 'admin')
这里有什么想法吗?
有点晚了,但是您可以用这个模拟字符串上的替换函数:
function replace(string, replace, by) {
return string.split(replace).join(by);
}
所以你需要在 firestore.rules 文件中定义这个函数,然后你可以调用replace(request.auth.token.email, '.' , ',')
得到相同的结果request.auth.token.email.replace('.' , ',')
在 JavaScript 中。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)