如何使用同一登录页面处理两个不同用户的登录
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何使用同一登录页面处理两个不同用户的登录相关的知识,希望对你有一定的参考价值。
我正在创建一个有两个用户(医生和患者)的android应用。我为两个用户拥有不同的注册页面,但具有相同的登录页面。我试图通过使用Firebase Firestore来设置两个用户的登录名不同。我在Firestore数据库中设置了两个用户的电子邮件地址。在登录活动中,我获取了电子邮件地址,并均衡了从数据库中获取的登录页面和电子邮件的电子邮件,并将其设置为其他条件。我没有遇到什么问题。
还想知道我的逻辑是否正确?
这是我的登录活动。
public class MainActivity extends AppCompatActivity
EditText editText_email, editText_password;
Button signInButton, doctorSignUpButton, patientSignUpButton;
FirebaseFirestore firestore;
FirebaseAuth auth;
String doctorEmail, patientEmail;
@Override
protected void onCreate(Bundle savedInstanceState)
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
firestore = FirebaseFirestore.getInstance();
FirebaseApp.initializeApp(this);
auth = FirebaseAuth.getInstance();
editText_email = findViewById(R.id.editText_email);
editText_password = findViewById(R.id.editText_password);
signInButton = findViewById(R.id.signIn_button);
doctorSignUpButton = findViewById(R.id.doctorSignUpButton);
patientSignUpButton = findViewById(R.id.patientSignUpButton);
doctorSignUpButton.setOnClickListener(new View.OnClickListener()
@Override
public void onClick(View v)
Intent intent = new Intent(MainActivity.this, DoctorSignUp.class);
startActivity(intent);
);
patientSignUpButton.setOnClickListener(new View.OnClickListener()
@Override
public void onClick(View v)
Intent intent = new Intent(MainActivity.this, PatientSignUp.class);
startActivity(intent);
);
firestore.collection("Doctor Database").get()
.addOnCompleteListener(new OnCompleteListener<QuerySnapshot>()
@Override
public void onComplete(@NonNull Task<QuerySnapshot> task)
for (DocumentSnapshot documentSnapshot : task.getResult())
doctorEmail = documentSnapshot.getString("Email");
);
firestore.collection("Patient Database").get()
.addOnCompleteListener(new OnCompleteListener<QuerySnapshot>()
@Override
public void onComplete(@NonNull Task<QuerySnapshot> task)
for (DocumentSnapshot documentSnapshot : task.getResult())
patientEmail = documentSnapshot.getString("Email");
);
signInButton.setOnClickListener(new View.OnClickListener()
@Override
public void onClick(View v)
String email = editText_email.getText().toString();
String password = editText_password.getText().toString();
if (email == doctorEmail)
auth.signInWithEmailAndPassword(email, password)
.addOnCompleteListener(new OnCompleteListener<AuthResult>()
@Override
public void onComplete(@NonNull Task<AuthResult> task)
if (task.isSuccessful() && auth.getCurrentUser() != null)
Toast.makeText(MainActivity.this, "Logged In Successfully!", Toast.LENGTH_LONG).show();
Intent intent = new Intent(MainActivity.this, DoctorSignUp.class);
startActivity(intent);
).addOnFailureListener(new OnFailureListener()
@Override
public void onFailure(@NonNull Exception e)
Toast.makeText(MainActivity.this, "Error Logging in with Doctor Account!", Toast.LENGTH_LONG).show();
);
else if (email == patientEmail)
auth.signInWithEmailAndPassword(email, password)
.addOnCompleteListener(new OnCompleteListener<AuthResult>()
@Override
public void onComplete(@NonNull Task<AuthResult> task)
if (task.isSuccessful() && auth.getCurrentUser() != null)
Toast.makeText(MainActivity.this, "Logged In Successfully!", Toast.LENGTH_LONG).show();
Intent intent = new Intent(MainActivity.this, PatientSignUp.class);
startActivity(intent);
).addOnFailureListener(new OnFailureListener()
@Override
public void onFailure(@NonNull Exception e)
Toast.makeText(MainActivity.this, "Error Logging in with Patient Account!", Toast.LENGTH_LONG).show();
);
);
答案
[如果某人使用相同的电子邮件并注册了两个帐户,一个代表A医生,一个代表患者,该怎么办?如果您在注册时关闭此链接,检查在患者和医生数据库中之前是否签署过电子邮件,以及是否已签署,则您的逻辑是正确的,则表示您不接受。
以上是关于如何使用同一登录页面处理两个不同用户的登录的主要内容,如果未能解决你的问题,请参考以下文章