首页 > 解决方案 > 在电子邮件密码身份验证中进行额外的自定义检查 (Flutter - Firebase)

问题描述

对于 Flutter-Firebase 移动应用程序,是否可以进行其他检查(在使用电子邮件/密码验证时),例如附加手机的设备 ID并使用 Firestore 数据库检查以确保电子邮件设备的唯一性(以防止运行相同应用程序在具有相同电子邮件/密码的多个设备上)登录。

当前的登录方法 ( https://firebase.flutter.dev/docs/auth/usage/ ) 仅接受电子邮件+密码,并且找不到附加其他用户信息以进行身份​​验证的方法。

signInWithEmailAndPassword() 方法:

try {
  UserCredential userCredential = await FirebaseAuth.instance.signInWithEmailAndPassword(
    email: "barry.allen@example.com",
    password: "SuperSecretPassword!"
  );
} on FirebaseAuthException catch (e) {
  if (e.code == 'user-not-found') {
    print('No user found for that email.');
  } else if (e.code == 'wrong-password') {
    print('Wrong password provided for that user.');
  }
}

标签: firebaseflutterfirebase-authentication

解决方案


电子邮件密码验证仅需要电子邮件和密码来验证用户。如果您需要存储任何其他数据,则必须将它们存储在自定义声明或任何数据库中。您可以根据需要阅读此信息。但是,用户仍然可以对应用程序进行反向工程并在没有额外检查的情况下登录,因为 Firebase 只需要电子邮件和密码,即使没有额外的身份验证扩展,它仍然可以工作。

每当用户登录时,您可以检查数据库中是否存在该用户帐户的任何会话,然后根据会话是否存在执行相关操作。


推荐阅读