Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/229.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 如何为不同的用户类型处理两个登录表单?_Android_Firebase_Firebase Authentication - Fatal编程技术网

Android 如何为不同的用户类型处理两个登录表单?

Android 如何为不同的用户类型处理两个登录表单?,android,firebase,firebase-authentication,Android,Firebase,Firebase Authentication,我的应用程序有两种类型的用户,职员和学生。职员用户的登录页面与学生的不同。问题是,如果我在员工的登录页面中输入学生的电子邮件id和密码,它就会被登录,但情况应该不是这样。此外,我想澄清的是,工作人员不能注册该应用程序。他们只能使用提供给他们的电子邮件id和密码登录,这样学生就不能注册为教职员工。此电子邮件id和密码是在身份验证控制台中手动创建的。但是auth没有针对不同用户的任何规范,因此,即使存储在auth中的学生的电子邮件和密码也会被员工登录页面接受。我不知道在这种情况下如何处理员工登录。感

我的应用程序有两种类型的用户,职员和学生。职员用户的登录页面与学生的不同。问题是,如果我在员工的登录页面中输入学生的电子邮件id和密码,它就会被登录,但情况应该不是这样。此外,我想澄清的是,工作人员不能注册该应用程序。他们只能使用提供给他们的电子邮件id和密码登录,这样学生就不能注册为教职员工。此电子邮件id和密码是在身份验证控制台中手动创建的。但是auth没有针对不同用户的任何规范,因此,即使存储在auth中的学生的电子邮件和密码也会被员工登录页面接受。我不知道在这种情况下如何处理员工登录。感谢您的帮助

这是员工登录:

mAuth.signInWithEmailAndPassword(email,pass).addOnCompleteListener(new OnCompleteListener<AuthResult>() {
                @Override
                public void onComplete(@NonNull Task<AuthResult> task) {

                    if(task.isSuccessful() ){
                        pd.dismiss();

                        Intent intent=new Intent(getActivity(),MainActivity.class);

                    startActivity(intent);



                    }else if(!task.isSuccessful()){
                        pd.dismiss();
                        Toast.makeText(getActivity(),"You are not allowed to login!",Toast.LENGTH_LONG).show();
                    }
                }


            });
mAuth.signwithEmailandPassword(email,pass).addOnCompleteListener(新OnCompleteListener(){
@凌驾
未完成的公共void(@NonNull任务){
if(task.issusccessful()){
pd.解散();
Intent Intent=新的Intent(getActivity(),MainActivity.class);
星触觉(意向);
}如果(!task.issusccessful()),则为else{
pd.解散();
Toast.makeText(getActivity(),“您不允许登录!”,Toast.LENGTH\u LONG.show();
}
}
});
请在登录或注册应用程序时,您必须向工作人员提供唯一令牌

例如:- 员工登录:-

  • 用户名
  • 密码
  • 身份验证令牌
  • 学生登录:- 学生通常使用用户名和密码注册

  • 用户名
  • 密码
  • 身份验证令牌提供教职员工和学生之间的差异


    您的数据库中需要有两个不同的部分,
    职员
    学生
    。您的数据库应如下所示:

    Firebase-root
         |
         --- Staff
         |     |
         |     --- staff1@email,com
         |     |       |
         |     |       --- //details
         |     |
         |     --- staff2@email,com
         |             |
         |             --- //details
         |
         --- Students
               |
               --- student1@email,com
               |       |
               |       --- //details
               |
               --- student2@email,com
                       |
                       --- //details
    
    正如您可能看到的,用户之间的唯一标识符是电子邮件地址。然后对每个部分使用
    exists()
    方法。如果用户是学生并且存在于
    Students
    部分,则登录,否则显示消息


    希望能有所帮助。

    感谢您的回复。你能告诉我怎么做吗?谢谢你的回复。问题是员工不允许注册。他们只能使用提供的电子邮件和密码登录。因此,有关他们的数据不会通过应用程序存储在数据库中,这与学生登录不同,在学生登录时,有关他们的详细信息也会添加到数据库中。我不知道如何手动将员工的数据存储在数据库中。然后不允许员工注册。在这种情况下,只需使用Firebase控制台添加内容。它使用起来非常简单。