【发布时间】:2022-01-10 13:14:15
【问题描述】:
我正在尝试通过电子邮件检查我的数据库中是否存在用户,是否有任何 Firebase 规则可以做到这一点? 我的用户:
public class User {
private String email;
private String password;
private boolean hasRightToDrive;
}
有了这个 firebase 规则,我无法添加用户:
{
"rules": {
".read": "now < 1640815200000", // 2021-12-30
".write": "!data.exists()", // 2021-12-30
}
}
有了这个,我仍然可以使用相同的邮件添加多个用户
{
"rules": {
".read": "now < 1640815200000", // 2021-12-30
".write": "data.exists()", // 2021-12-30
}
}
【问题讨论】:
-
登录过程已经有,会抛出email已经存在的错误。
-
Firebase: Error (auth/email-already-in-use).如果你抓住它就会得到这个错误,否则它会抛出一个控制台日志。 -
如果您不是指登录您的应用程序的用户,而是向您发送电子邮件的用户。最好的方法是在您进行电子邮件检查时创建firebase功能,它是否全部存在于数据库中,如果是则抛出错误。
-
Firebase 安全规则无法检查父节点下是否存在特定值,因为这要求它们查询所有这些节点并且不会扩展。解决方案是添加一个额外的路径,您可以在其中使用(编码的)电子邮件地址作为子节点的 key。由于键在其父项中按定义是唯一的,因此您无法以任何方式插入重复项。有关这方面的更多信息,请参阅关于我链接的主题的上一个问题。
标签: firebase firebase-realtime-database firebase-security