【问题标题】:Password length through Firebase authentication通过 Firebase 身份验证的密码长度
【发布时间】:2020-11-12 22:07:11
【问题描述】:

如何在密码长度上显示错误消息?通过 Firebase 身份验证进行登录。 if final EditText mpassword.mpassword.setError("密码必须在 8 到 15 个字符之间。"); 返回; 我试图从密码长度中创建一个 if/else 语句,但这似乎并不正确。 这是我到目前为止的代码。

    package com.debatewithus.ui.login;
    
    import android.content.Intent;
    import android.os.Bundle;
    
    import androidx.annotation.NonNull;
    import androidx.appcompat.app.AppCompatActivity;
    
    import android.text.TextUtils;
    import android.view.View;
    import android.widget.Button;
    import android.widget.EditText;
    import android.widget.TextView;
    import android.widget.Toast;
    
    import com.debatewithus.MainActivity;
    import com.debatewithus.R;
    import com.debatewithus.User;
    import com.debatewithus.UserLocalStore;
    import com.google.android.gms.tasks.OnCompleteListener;
    import com.google.android.gms.tasks.Task;
    import com.google.firebase.auth.AuthResult;
    import com.google.firebase.auth.FirebaseAuth;
    
    import static android.icu.lang.UCharacter.GraphemeClusterBreak.V;
    
    public class LoginActivity extends AppCompatActivity {
    
    
        protected void onCreate(Bundle savedInstanceState, ClassNotFoundException task) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_sign_up);
    
            Button login;
            Button sign_up;
            final EditText mail;
            final EditText mpassword;
            TextView forgotpassword;
            final FirebaseAuth auth;
    
            auth = FirebaseAuth.getInstance();
    
            mail = findViewById(R.id.username);
            mpassword = findViewById(R.id.Password);
            login = findViewById(R.id.login);
            sign_up = findViewById(R.id.signup);
            forgotpassword = findViewById(R.id.forgotpassword);
    
            login.setOnClickListener((new View.OnClickListener() {
                @Override
                public void onClick(View v) {
    
                    finish();
                }
            }));
            sign_up.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
    
                    String email_address = mail.getText().toString().trim();
                    String password = mpassword.getText().toString().trim();
    
                    if (TextUtils.isEmpty(email_address)) {
                        mail.setError("Email is Required.");
                        return;
                    }
                    if (TextUtils.isEmpty(password)) {
                        mpassword.setError("Password Required.");
                        return;
    
                        if (!(password.length() < 8 && (password.length() > 15))) {
                        final EditText mpassword.mpassword.setError("Password Must be Between 8 and 15 Characters.");
                        return;
    
                            }
                        auth.signInWithEmailAndPassword(email_address, password).addOnCompleteListener(new OnCompleteListener<AuthResult>() {
                                        @Override
                                        public void onComplete(@NonNull Task<AuthResult> task) {
                                            if (task.isSuccessful())
                                                startActivity(new Intent(getApplicationContext(), MainActivity.class) {
                                                });
                                            else {
                                                Toast.makeText(LoginActivity.this, "Error!" + task.getException().getMessage(), Toast.LENGTH_SHORT).show();
                                                startActivity(new Intent(getApplicationContext(), MainActivity.class));
    
                                                    }
                                                };
    
                                            });
                                        };
    
                                    };
                        });
        };
            };

【问题讨论】:

  • 密码长度不能同时小于 8 和大于 15。使用 OR
  • “甚至似乎都不起作用”。究竟是什么不起作用?

标签: java android firebase firebase-authentication


【解决方案1】:

您需要与|| 进行逻辑或,而不是与&amp;&amp; 进行逻辑与:

if (!(password.length() < 8 || (password.length() > 15)))

如果密码长度小于 8 或大于 15,这将评估为 true。

【讨论】:

  • 如果我这样做仍然会给我一个错误||由于我试图写的错误消息,在 8 到 15 之间设置密码。
【解决方案2】:

将 AND 替换为 OR ,然后删除 ! .应该这样做。

如果 ((password.length() 15))) {

【讨论】:

  • 这并不能解决问题,因为当密码不是一定长度时我试图显示的错误消息仍然给出错误
  • 好的,我知道你的问题了。改变如下。您正在检查是否不正确。 if ((password.length() 15)))
  • 查看password.length下方的代码。那是我试图用 .我希望在密码不在 8 到 15 个字符之间时弹出错误消息。错误:最终 EditText mpassword.mpassword.setError("密码必须在 8 到 15 个字符之间。");返回;
  • 您的长度检查条件是否在 isEmpty if 条件内。所以那段代码永远不会被执行。把它放在 isEmpty 旁边。
  • 好的,谢谢,但现在该语句的末尾有一个带括号的错误。错误:password.length >15)))) {
猜你喜欢
  • 2016-07-19
  • 1970-01-01
  • 2018-09-03
  • 1970-01-01
  • 1970-01-01
  • 2021-04-29
  • 2023-01-21
  • 2016-11-14
相关资源
最近更新 更多