我可以在Firebase身份验证中验证电子邮件的域区域吗?

时间:2019-03-01 07:43:23

标签: javascript firebase firebase-authentication angularfire2

我可以在Firebase身份验证中验证电子邮件域区域吗?

例如,我只想为来自yahoo和gmail @ yahoo.com, @ gmail.com电子邮件)

的电子邮件进行成功注册

p.s。我当然可以在客户端验证它,但这还不够

1 个答案:

答案 0 :(得分:1)

不幸的是,您无法在注册之前验证电子邮件的域(不包括客户端)。

您可以执行一些选择:

  • 选项1::如果用户的域不是您的某些特定域,则阻止访问数据库和存储:

例如:

"rules": {
    ".read": "auth.token.email.endsWith('@gmail.com')",
    ".write": "auth.token.email.endsWith('@gmail.com')"
  }
}

或类似这样:

"rules": {
    ".read": "auth.token.email_verified == true && auth.token.email.matches(/.*@gmail.com$/)",
    ".write": "auth.token.email_verified == true && auth.token.email.matches(/.*@gmail.com$/)"
  }
}

积分:https://stackoverflow.com/a/38019847/2765346

  • 选项2::添加Firebase身份验证触发器并侦听新用户。然后,您可以验证新注册的用户并使用无效的域禁用这些用户:

例如:

exports.validateUser = functions.auth.user().onCreate((user) => {
   if (!user.email.matches(/.*@gmail.com$/)) {
       admin.auth().updateUser(data, {
           disabled: true
       });
   }
});

积分:https://firebase.google.com/docs/functions/auth-events