Firestore安全规则-检查字段是否为有效的电子邮件地址

时间:2019-06-29 17:49:50

标签: firebase google-cloud-firestore firebase-security-rules

如何验证输入字段是否为有效的电子邮件? Firestore安全规则中是否可以使用字符串函数或其他任何方法?

示例:

比方说,我有一个“请求”字段,该字段名为“电子邮件”。在我的Firestore安全规则中,我想检查电子邮件是否是有效的电子邮件地址:

  
      
  • 包含“ @”
  •   
  • 以.xx或.xxx(国家/地区域结尾)结尾
  •   
  • 有一个“。”电子邮件的最后三个或两个字母之前
  •   
  • “。”不是紧跟在'@'之后-至少必须在两个字母之间
  •   

例如example@emailprovider.com被接受,但example @ .com不被接受。

我知道此检查非常广泛,并且还想知道将这种验证引入安全规则是否有意义?

2 个答案:

答案 0 :(得分:1)

您可以使用rules.String.matches

请参见

  

对整个字符串执行正则表达式匹配。

     

使用Google RE2 syntax的正则表达式。

如果您只想设置电子邮件地址,则必须将该字段验证为电子邮件地址。

答案 1 :(得分:1)

我找到了一个正则表达式的示例(并进行了一些调整):

^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\\.[a-zA-Z]{2,5}$

其来源位于以下页面的底部:

https://firebase.google.com/docs/reference/security/database/regex

您还应该考虑该注释:

注意:这将拒绝某些有效的电子邮件。验证电子邮件地址 正则表达式通常很难。参见此site 在主题上更深入。