防止无效 email/password 提示

Prevent invalid email/password hinting

我正在使用 Angular 7 构建登录页面,我正在使用 angularfire2。一切正常,但有些东西让我很烦,我真的很不喜欢。这是我正在使用的表格:

但是,如果我输入错误的密码,开发者控制台的网络选项卡会注册以下内容:

如果我输入了错误的电子邮件地址,网络选项卡会显示:

{error: {code: 400, message: "EMAIL_NOT_FOUND",…}}
error: {code: 400, message: "EMAIL_NOT_FOUND",…}
code: 400
errors: [{message: "EMAIL_NOT_FOUND", domain: "global", reason: "invalid"}]
message: "EMAIL_NOT_FOUND"

我真的不喜欢这个的原因是当电子邮件或密码无效时,我会向用户显示消息:

You enter an invalid email or password

但这清楚地暗示了它的错误,因此如果有人试图破解,它会得到关于密码或电子邮件具体是否有效的提示。

这是我在用户单击“登录”按钮时使用的逻辑:

  onSignIn(form: NgForm){
    const email = form.value.email;
    const password = form.value.password;
    this.afAuth.auth.signInWithEmailAndPassword(email, password)
      .then(firebaseUser=>{
        console.log(firebaseUser);
      }).catch(error=>{
        if(error.code === "auth/user-not-found" || error.code === "auth/wrong-password"){
          this.wrongAuthCreds = true;
          setTimeout(()=>{
            this.wrongAuthCreds = false;
          }, 3000);
        } else {
          this.unknownErr = true;
          setTimeout(()=>{
            this.unknownErr = false;
          }, 3000);
          console.log(error);
        }        
      });
  } 

有没有办法阻止发送该响应?有什么我应该配置或根本不能配置的东西。我查看了文档无济于事。提前致谢!

正如 David 在他的评论中所说,这些消息来自 Firebase 的后端本身,不幸的是,没有选项可以自定义该默认行为...但是...Firebase 确实 使您能够 customize the authentication process 使用自定义身份验证令牌。

工作量很大,但如果您真的想走这条路,那么您需要创建一个接受用户名和密码,验证它,生成一个自定义的 JWT,然后 returns 将它提供给最终用户...并让您的登录页面 POST 使用该云功能的凭据而不是 afAuth.auth.signInWithEmailAndPassword。在您的新功能中,如果您无法验证用户名和密码,您可以发送回任何类型的通用错误消息。