在确认注册之前验证用户的电子邮件地址,使用 Flutter 和 Firebase



我已经创建了一个登录和注册屏幕,它可以与我的Flutter应用程序一起使用,使用Firebase作为后端身份验证服务。我能够很好地在登录、注册和重置密码屏幕之间切换。

问题

目前,注册屏幕接受输入的任何电子邮件地址,无论它是否真实。例如,如果我输入gvevg@gverwbgw.com,它将允许用户注册。这显然是一个问题,当涉及到虚假账户和垃圾邮件等时。

目标

我基本上希望能够编辑我的代码,自动生成一封电子邮件地址验证电子邮件,防止用户在验证电子邮件地址之前登录。我编写的代码使用FutureFirebaseAuthasync/await来实现这一点。

我的当前代码

首先,我定义了一个AuthBase抽象类,它创建了"createUserWithEmailAndPassword"函数(以及其他函数(,如下所示:

abstract class AuthBase {
Stream<User> get onAuthStateChanged;
Future<User> currentUser();
Future<User> createUserWithEmailAndPassword(String email, String password);
}

然后,我创建了一个Auth函数,该函数实现AuthBase,从Firebase获取当前用户,并创建注册Future函数,如下所示:

class Auth implements AuthBase {
final _firebaseAuth = FirebaseAuth.instance;
// This creates the user ID token variable (if one doesn't already exist) which is then populated using one of the login methods.
User _userFromFirebase(FirebaseUser user) {
if (user == null) {
return null;
}
return User(uid: user.uid);
}
// This helps to get the user from Google Firebase, noting if there is or isn't a user with those login details already.
@override
Stream<User> get onAuthStateChanged {
return _firebaseAuth.onAuthStateChanged.map(_userFromFirebase);
}
// This identifies the current user, who is logged in at the time.
@override
Future<User> currentUser() async {
final user = await _firebaseAuth.currentUser();
return _userFromFirebase(user);
}
// This creates the user account for an email-and-password sign-in, with firebase, if it doesn't already exist.
@override
Future<User> createUserWithEmailAndPassword(
String email, String password) async {
final authResult = await _firebaseAuth.createUserWithEmailAndPassword(
email: email, password: password);
return _userFromFirebase(authResult.user);
}
}

我的问题

我如何编辑我的代码,以便它允许我为任何想要使用电子邮件登录的用户自动实现电子邮件验证?我认为sendEmailVerification()函数必须使用FirebaseUser,尽管我不确定如何在这里实现它。如果有任何帮助,我将不胜感激。谢谢

电子邮件+密码身份验证只需要用户知道电子邮件+密码的组合。它本身不需要验证电子邮件地址就可以登录。如果你想在允许访问其他数据之前验证电子邮件地址,你可以通过检查用户的email_verified声明令牌来做到这一点,例如在数据库的安全规则中。

另请参阅:

  • 如何将Firebase数据库锁定为特定(电子邮件(域中的任何用户
  • 注册时的Firebase电子邮件验证
  • 如何在验证电子邮件之前阻止Firebase/Vue.js中的用户身份验证
  • 仅允许预先验证的用户登录Firebase

相关内容

最新更新