【问题标题】:Firestore Security Rules - check if field is a valid email addressFirestore 安全规则 - 检查字段是否为有效的电子邮件地址
【发布时间】:2019-06-29 17:49:50
【问题描述】:

如何验证传入字段是否为有效电子邮件?有没有办法在 Firestore 安全规则中使用字符串函数或任何东西?

示例:

假设我有一个创建请求,其中包含一个名为“电子邮件”的字段。在我的 Firestore 安全规则中,我想检查电子邮件是否是有效的电子邮件地址:

  • 包含“@”
  • 以 .xx 或 .xxx 结尾(一个随意的国家域名结尾)
  • 有一个“.”在电子邮件的最后三个或两个字母之前
  • '.'不直接跟在“@”之后 - 中间必须至少有两个字母

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

我知道这项检查相当广泛,并且进一步想知道将这样的验证引入安全规则是否有意义?

【问题讨论】:

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


    【解决方案1】:

    您可以使用rules.String.matches

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

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

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

    【讨论】:

      【解决方案2】:

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

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

      来源在以下页面的底部:

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

      您还应该考虑到注释:

      注意:这将拒绝一些有效的电子邮件。验证电子邮件地址 在正则表达式中通常很难。看到这个site 更深入地了解该主题。

      【讨论】:

        猜你喜欢
        • 2020-01-14
        • 2011-10-25
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-03-09
        • 2018-06-18
        • 2016-04-06
        相关资源
        最近更新 更多