您可以使用 Firebase 身份验证让您的用户使用他们的电子邮件地址和密码通过 Firebase 进行身份验证,并管理您应用的基于密码的帐户。
在你开始之前
- 将 Firebase 添加到您的 JavaScript 项目。
- 如果您尚未将您的应用程序连接到您的 Firebase 项目,请从Firebase 控制台执行此操作。
- 启用电子邮件/密码登录:
- 在Firebase 控制台中,打开Auth部分。
- 在登录方法选项卡上,启用电子邮件/密码登录方法并单击保存。
创建基于密码的帐户
要创建一个带密码的新用户帐户,请在您应用的注册页面中完成以下步骤:
- 当新用户使用您应用的注册表单注册时,请完成您的应用所需的所有新帐户验证步骤,例如验证新帐户的密码是否输入正确并满足您的复杂性要求。
- 通过将新用户的电子邮件地址和密码传递给
createUserWithEmailAndPassword
来创建一个新帐户:如果创建了新帐户,用户将自动登录。请查看下面的后续步骤部分以获取已登录用户的详细信息。Web version 9
import { getAuth, createUserWithEmailAndPassword } from "firebase/auth"; const auth = getAuth(); createUserWithEmailAndPassword(auth, email, password) .then((userCredential) => { // Signed in const user = userCredential.user; // ... }) .catch((error) => { const errorCode = error.code; const errorMessage = error.message; // .. });
Web version 8
firebase.auth().createUserWithEmailAndPassword(email, password) .then((userCredential) => { // Signed in var user = userCredential.user; // ... }) .catch((error) => { var errorCode = error.code; var errorMessage = error.message; // .. });
这也是您可以捕获和处理错误的地方。有关错误代码的列表,请查看Auth Reference Docs 。
使用电子邮件地址和密码登录用户
使用密码登录用户的步骤与创建新帐户的步骤类似。在您应用的登录页面中,执行以下操作:
- 当用户登录您的应用程序时,将用户的电子邮件地址和密码传递给
signInWithEmailAndPassword
:请查看下面的后续步骤部分以获取已登录用户的详细信息。Web version 9
import { getAuth, signInWithEmailAndPassword } from "firebase/auth"; const auth = getAuth(); signInWithEmailAndPassword(auth, email, password) .then((userCredential) => { // Signed in const user = userCredential.user; // ... }) .catch((error) => { const errorCode = error.code; const errorMessage = error.message; });
Web version 8
firebase.auth().signInWithEmailAndPassword(email, password) .then((userCredential) => { // Signed in var user = userCredential.user; // ... }) .catch((error) => { var errorCode = error.code; var errorMessage = error.message; });
这也是您可以捕获和处理错误的地方。有关错误代码的列表,请查看Auth Reference Docs 。
推荐:启用电子邮件枚举保护
如果电子邮件地址在必须注册时未注册(例如,使用电子邮件地址和密码登录时),或者在必须不使用时注册(例如,更改用户的电子邮件地址时)。虽然这有助于向用户建议具体的补救措施,但它也可能被恶意行为者滥用以发现用户注册的电子邮件地址。
为降低此风险,我们建议您使用 Google Cloud gcloud
工具为您的项目启用电子邮件枚举保护。请注意,启用此功能会更改 Firebase 身份验证的错误报告行为:确保您的应用不依赖于更具体的错误。
下一步
用户首次登录后,将创建一个新的用户帐户并将其链接到用户登录所用的凭据,即用户名和密码、电话号码或身份验证提供商信息。这个新帐户存储为您的 Firebase 项目的一部分,可用于在项目中的每个应用程序中识别用户,无论用户如何登录。
在您的应用程序中,了解用户身份验证状态的推荐方法是在
Auth
对象上设置观察者。然后,您可以从User
对象获取用户的基本个人资料信息。请参阅管理用户。在您的 Firebase Realtime Database 和 Cloud Storage Security Rules中,您可以从
auth
变量中获取登录用户的唯一用户 ID,并使用它来控制用户可以访问的数据。
您可以允许用户使用多个身份验证提供程序登录您的应用程序,方法是将身份验证提供程序凭据链接到现有用户帐户。
要注销用户,请调用signOut
:
Web version 9
import { getAuth, signOut } from "firebase/auth"; const auth = getAuth(); signOut(auth).then(() => { // Sign-out successful. }).catch((error) => { // An error happened. });
Web version 8
firebase.auth().signOut().then(() => { // Sign-out successful. }).catch((error) => { // An error happened. });