首页 > 解决方案 > 仅使用电子邮件登录 Firebase(无链接,无密码)

问题描述

前言:这并没有存储任何安全的东西——这是我的一个测试项目,看看什么是可能的,什么是不可能的。

我一直在扫描文档,寻找一种使用电子邮件登录用户(在网站上)的方法,而无需他们前往收件箱获取身份验证链接或输入密码。

Firebase Auth 在技术上是否可行?

我想到的一个潜在的黑客方式是有一个隐藏的密码字段,其中每个用户都有相同的密码,并通过 Javascript 预填充。

标签: firebasefirebase-authentication

解决方案


从技术上讲,正如您所描述的那样是可能的。如果您对它没问题,您可以为所有用户使用相同的密码,让所有用户在注册和登录时输入电子邮件。您甚至不需要将其隐藏在某些字段中。只需将其以明文形式放入代码中:

-登记

import { getAuth, createUserWithEmailAndPassword } from "firebase/auth";

const auth = getAuth();
createUserWithEmailAndPassword(auth, email, "yourPassword")
  .then((userCredential) => {
    // Signed in 
    const user = userCredential.user;
    // ...
  })
  .catch((error) => {
    const errorCode = error.code;
    const errorMessage = error.message;
    // ..
  });

-登录

import { getAuth, signInWithEmailAndPassword } from "firebase/auth";

const auth = getAuth();
signInWithEmailAndPassword(auth, email, "yourPassword")
  .then((userCredential) => {
    // Signed in 
    const user = userCredential.user;
    // ...
  })
  .catch((error) => {
    const errorCode = error.code;
    const errorMessage = error.message;
  });

通过使用fetchSignInMethodsForEmail,您可以检测用户是否已注册,并在后台自动执行此操作,因此您的用户只需输入电子邮件,无论他们是否在您身边。新老用户的用户体验是一样的。

警告:技术上可以这样做。我和其他所有人都建议您不要这样做。有人可以使用相同的密码从 ppl 获取用户数据,只需知道他们正在发送电子邮件或对您的项目做其他有害的事情。

也许您可以向我们解释您为什么要这样做,也许我们可以为您找到更好的解决方案。


推荐阅读