在我的注册活动中,用户必须输入电子邮件地址,然后输入长于6的密码,并带有特殊符号等。问题是,在满足所有密码要求后,用户单击注册按钮,然后单击祝酒词弹出消息,表明已经发送了一封电子邮件,但同时用户已登录。按下电话的后退按钮时,该用户位于应用程序中,只有在验证其地址后,该用户才应该在该应用程序中。
这是我的电子邮件注册活动的一部分:
btnSignUp.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String email = inputEmail.getText().toString();
String password = inputPassword.getText().toString();
String passwordConfirm = inputPasswordConfirm.getText().toString();
if (password.length() < 6) {
Toast.makeText(getApplicationContext(), "Das Passwort ist zu kurz, gebe mindestens 6 Zeichen ein.", Toast.LENGTH_SHORT).show();
return;
}
if (!password.matches("^(?=.*[A-Za-z])(?=.*\\d)(?=.*[$@$!%*#?&])[A-Za-z\\d$@$!%*#?&]{8,}$")){
Toast.makeText(RegistrationEmailActivity.this, "Dein Passwort hat mindestens eine der folgenden Anforderungen nicht: Großbuchstaben, Zahl, Spezialzeichen.", Toast.LENGTH_SHORT).show();
return;
}
if (TextUtils.isEmpty(passwordConfirm)){
Toast.makeText(getApplicationContext(), "Bestätige dein Passwort", Toast.LENGTH_SHORT).show();
}
else if (!password.equals(passwordConfirm)){
Toast.makeText(getApplicationContext(), "Die Passwörter stimmen nicht überein. Bitte überprüfe deine Eingabe.", Toast.LENGTH_SHORT).show();
}
else {
progressBar.setVisibility(View.VISIBLE);
//create user
auth.createUserWithEmailAndPassword(email, password)
.addOnCompleteListener( new OnCompleteListener<AuthResult>() {
@Override
public void onComplete(@NonNull Task<AuthResult> task) {
Toast.makeText(RegistrationEmailActivity.this, "Welcome to the app", Toast.LENGTH_SHORT).show();
progressBar.setVisibility(View.GONE);
if (!task.isSuccessful()) {
Toast.makeText(RegistrationEmailActivity.this, "Authentication failed." + task.getException(),
Toast.LENGTH_SHORT).show();
} else {
auth.getCurrentUser().sendEmailVerification().addOnCompleteListener(new OnCompleteListener<Void>() {
@Override
public void onComplete(@NonNull Task<Void> task) {
if (task.isSuccessful()){
Toast.makeText(RegistrationEmailActivity.this, "Du wurdest erfolgreich registriert. Schau in deinem Postfach nach und klicke auf den Link, " +
"damit die E-Mail verifiziert wird und du dich einloggen kannst.", Toast.LENGTH_SHORT).show();
}else {
Toast.makeText(RegistrationEmailActivity.this, "Das hat leider nicht geklappt. Überprüfe deine E-Mail und versuche es erneut.", Toast.LENGTH_SHORT).show();
}
}
});
}
}
});
}
}
});
我使用了本教程https://www.youtube.com/watch?v=06YKlMdWyMM来验证电子邮件。我猜他在19:09展示了一些解决问题的方法,但是我不知道在哪里实现此代码。
当您在Firebase身份验证上创建帐户时,该用户将自动登录。无法阻止这种情况,这是预期的行为。
如果您只希望用户在验证其电子邮件地址后才允许他们访问应用程序中的某些屏幕,则可以isEmailVerified
在导航到该屏幕之前检入代码。
如果要阻止未经验证的用户访问您的(Firebase实时数据库,Cloud Firestore或Cloud Storage)后端中的某些数据,则可以在安全规则中检查该用户的令牌,以确保其电子邮件地址得到验证。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句