我想将Firebase用于我的网络应用程序,该应用程序适用于养老院中的痴呆症患者。他们没有电子邮件或社交网络帐户,因此需要简单的用户名/密码注册/登录。
最简单的方法是什么?从我在文档中看到的情况来看,我必须使用自定义的身份验证流,但我没有现有的身份验证服务器。
如果我确实需要这样做,那么提供代币的最简单方法是什么?Azure中有函数,AWS有Lambda,但我看这里没有Firebase
在末尾附加一个虚拟域是一种修补,应该避免。要启用用户名登录,只需执行以下简单步骤。
注册
在注册过程中,使用用户名、电子邮件和密码。使用普通电子邮件和密码注册用户。成功后,根据user\u id将电子邮件保存在单独的节点(分支)中。
mButtonSignUp.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if(isValid()){
mProgressBar.setVisibility(View.VISIBLE);
final String userId = mEditTextUserId.getText().toString();
final String emailId = mEditTextEmail.getText().toString() ;
String password = mEditTextPassword.getText().toString() ;
firebaseRef.createUser(emailId, password, new Firebase.ResultHandler() {
@Override
public void onSuccess() {
firebaseRef.child("user_ids").child(userId).setValue(emailId);
Toast.makeText(getBaseContext(),"You are successfully registered ",Toast.LENGTH_SHORT).show();
mProgressBar.setVisibility(View.GONE);
}
@Override
public void onError(FirebaseError firebaseError) {
mProgressBar.setVisibility(View.GONE);
Toast.makeText(getBaseContext(),firebaseError.toString(),Toast.LENGTH_SHORT).show();
}
});
}
}
});
数据库
数据库结构如下所示
登录名
检查用户是否输入了电子邮件或用户名。如果是电子邮件id,则直接使用它进行登录,否则获取与用户名关联的电子邮件id并进行登录。
Button buttonLogIn = (Button)findViewById(R.id.button_login);
buttonLogIn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
mProgressBar.setVisibility(View.VISIBLE);
String username = mEditTextEmail.getText().toString() ;
final String password = mEditTextPassWord.getText().toString() ;
// Check if it is an email or not
if(android.util.Patterns.EMAIL_ADDRESS.matcher(username).matches()) {
performLogin(username,password);
}else{
//get the emailId associated with the username
firebaseRef.child("user_ids").child(username)
.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
if(dataSnapshot!=null){
String userEmail = dataSnapshot.getValue(String.class);
performLogin(userEmail,password);
}
}
@Override
public void onCancelled(FirebaseError firebaseError) {
//Handle Error
}
});
}
}
});
private void performLogin(String emailId, String password) {
firebaseRef.authWithPassword(emailId,password, new Firebase.AuthResultHandler() {
@Override
public void onAuthenticated(AuthData authData) {
uid = authData.getUid() ;
Toast.makeText(getBaseContext(), authData.toString(), Toast.LENGTH_SHORT).show();
}
@Override
public void onAuthenticationError(FirebaseError firebaseError) {
Toast.makeText(getBaseContext(), firebaseError.toString(), Toast.LENGTH_SHORT).show();
}
});
}
您可以使用自定义令牌登录
Firebase允许您使用安全的JSON Web令牌(JWT)对用户或设备进行身份验证,从而让您完全控制身份验证。您在服务器上生成这些令牌,将它们传递回客户端设备,然后使用它们通过signInSusCustomToken()
方法进行身份验证。
signInSusCustomToken()
方法从服务器使用自定义令牌登录更多详细信息请参阅本文档
目前Firebase Auth中不支持本机用户名/密码登录,您是正确的。
您可以实现如本示例所示的自定义提供程序。这允许您满足任何自定义要求,但不可否认的是,这比使用内置提供程序要复杂一些。这里有一个示例,您可以将其用作起点。
无需在另一个后端使用自定义身份验证,您可以采取的一种解决方法是在UI中接受用户名,但在底层逻辑上,在调用函数注册或使用电子邮件登录之前,请附加“@yourowndomain.com
”。
因此,您将使用电子邮件/密码身份验证,映射<代码>
使用Firebase,我可以使用电子邮件地址注册和登录用户。但是,如果我希望应用程序基于用户名怎么办?例如,您使用“Bobzilla”而不是“Bob@mail.com”登录? Firebase是否可以这样做?
我有一个使用Spring Security的应用程序。在成功注册后,我试图获取用户的姓名,但当我进入登录页面时,我收到的是电子邮件而不是姓名。成功登录后,我提供了一个屏幕截图。 在上图中,我想要名字,而不是电子邮件地址。 我在给你上课,我认为这最重要。 控制器类 安全配置类 LOGIN.HTML 应用程序用户类
我已经实现了登录用户名或电子邮件在我现有的项目和工程罚款。我想将其扩展为使用用户名、电子邮件或电话登录。我想要一个用户登录用户名,电子邮件或电话号码和密码。 这是我的代码App\Http\Controllers\Auth\LoginController 应用程序\Http\控制器\Auth\注册控制器 注册工作正常,我可以将用户电话存储到用户表中。我已将电子邮件的输入类型更改为views/auth
我正在使用Firebase数据库创建一个应用程序,其中添加了登录和注册功能。我想添加使用用户名而不是电子邮件ID的登录。但是我找不到任何使用用户名进行身份验证的方法。如果我将Firebase数据库规则更改为公共,那么我可以使用用户名登录,但在这种情况下数据库的安全性受到阻碍。因此,请指导我在Firebase上使用用户名登录,并建议我如何在注册前检查用户名的可用性,如果用户名可用,则用户可以注册,如
问题内容: 我正在尝试创建一个auth后端,以允许我的用户使用他们的电子邮件地址或他们在Django 1.6中使用自定义用户模型的用户名登录。当我使用用户名登录时,后端工作正常,但由于某种原因,没有电子邮件。有什么我忘记要做的事吗? 编辑:按照建议,我已从ModelBackend继承并将其安装在我的设置中。在我的设置中,我有这个(,)并且我将后端更改为这个: 现在我得到一个错误。 问题答案: 遵循
我希望身份验证组件允许用户登录输入用户名或电子邮件。在我的用户表中,两个字段-userName和userEmail都是唯一的。注册时,密码生成如下: sha1($username.$password); 问题是用户无法使用电子邮件登录。 应用程序控制器 用户控制器:登录功能如下: Auth。php:(我在这里对生成密码的方式做了一些更改,因为我正在使用cakephp会话自动登录到SMF论坛。) 我