首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >防火墙中的电子邮件地图验证

防火墙中的电子邮件地图验证
EN

Stack Overflow用户
提问于 2020-08-03 13:40:24
回答 1查看 117关注 0票数 1

因此,我知道电子邮件验证是一件非常困难的事情。我已经写了一个正则表达式,检查一个有效的电子邮件地址。问题是编写安全规则,就像我在处理云防火墙中的地图一样。地图看起来是这样的:

代码语言:javascript
复制
email{
    work: ""
    personal: ""
}

问题是,我不能保证一个特定的值将匹配正则表达式。用户应该只有一封个人邮件,一封工作邮件,或者一封个人邮件和一封工作邮件。在所有的情况下,都应该在防火墙中产生有效的电子邮件附件。

我目前有以下代码,但我不知道如何处理这样的地图:

代码语言:javascript
复制
match /organisations/{orgID}/people/{userID} {
    allow create: if(request.resource.data.email.matches(^[A-Za-z0-9]{3,}[@]{1}[A-Za-z0-9]{3,}[.]{1}[A-Za-z0-9]{3,}$) == true);
}

只有一条安全规则就能做到这一点吗?如果是,怎么做?如果没有,我该怎么做呢?如果可能的话,我宁愿使用安全规则而不是编写云函数。

我目前有类似的情况,但是我得到了一个错误,因为firebase似乎不认识\\ (OR)操作符。有没有其他办法可以这样做?我正在尝试测试电子邮件是有效的还是无效的。

代码语言:javascript
复制
match /organisations/{orgID}/people/{userID}{
    allow create: if(
        request.resource.data.email.work.matches(^[A-Za-z0-9.]{3,}[@]{1}[A-Za-z0-9.]{3,}[.]{1}[A-Za-z0-9.]{3,}$|"") 
    );
}

提前感谢您的帮助!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-08-03 14:38:05

这里有两个截然不同的问题。它们之间没有直接的联系。我会尝试分别处理这些问题。

这个问题是写安全规则,因为我正在处理云火药库中的地图。

如果要在map字段中使用嵌套字段的值,只需使用点表示法即可:

代码语言:javascript
复制
request.resource.data.email.work
request.resource.data.email.personal

问题在于,我不能保证一个特定的值将与正则表达式匹配。用户应该只有一封个人邮件,一封工作邮件,或者一封个人邮件和一封工作邮件。

您需要编写逻辑来分别检查每个映射字段。你不能同时检查地图的所有字段。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63230548

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档