繁体   English   中英

Firebase,通过具有唯一密码要求的 Email 更改用户密码

[英]Firebase, Changing User password via Email with unique password requirements

目前,Firebase 提供向希望更改密码的用户 email 发送 email 的选项。 不幸的是,Firebase 不允许您编辑他们的密码要求,我认为它被锁定在只需要 6 个字符。

对于许多人来说,这是不充分和不安全的。

我最近制作了一个应用程序,允许用户为自己或他人创建测验。 在此应用程序中,我存储了我的用户的个人信息,并且我想确保他们的帐户安全,所以我需要更多的密码。 不幸的是,当用户希望更改他们的 email 时,默认的 Firebase function 不会保证我的安全,这会导致混淆,因为用户可以根据 Firebase 的宽松限制更改他们的密码,但他们仍然无法登录,因为他们使用了无效的密码。 (我什至在使用 Firebase 检查之前就从文本框中屏蔽了无效密码)。

遇到这个错误后,我就来StackOverflow求助,看看有没有人有这个问题,想出了解决办法。 不幸的是,我遭到了自称是Firebase官员和管理员的用户的严厉批评和骚扰,他们根本不关心我的问题。

然后,经过一周的研究和测试,我找到了使用 React 和 3rd 方库来处理这个问题的解决方案。

请在下面查看我的回答,如果您有更有创意的解决方案,我也有兴趣看到它。

要解决这个问题,唯一的答案是使用您自己的基本邮件服务、主机网站和 API 创建您自己的邮件服务。

您需要:一个使用 Firebase 的应用程序。一个使用 Firebase 的托管 API 和一个第三方邮件程序,例如带有 NodeMailer 的 Node - 托管在 Heroku 上 一个可以与 API 通信的 React 应用程序

我做了什么:

首先,我创建了我的 API,它接受来自我指定的 IP 地址的呼叫。 此 API 可以在密码已知或未知时接收重置密码的请求。 当密码已知时,我使用 NodeMailer 向用户发送一个 email 并发送一个特殊的 HTML 文件,因此 email 看起来是正式的。 如果您愿意,可以很容易地复制 Firebase 电子邮件的布局。 更多信息可以在这里找到: https://nodemailer.com/message/

然后,我创建了一个托管在 Heroku 上的 React 应用程序。当用户单击 email 中的链接时,它会将他们发送到该网站,并在查询中提供所需的信息。 这个应用程序,就像点击 Firebase 链接时一样,只是一个简单的文本框和提交按钮。 但是,现在您可以自定义它以要求使用第二个文本框确认密码。 您还可以添加公司徽标和自定义 colors,因此它不是 HTML 1 看起来像您从 Firebase 看到的链接。最重要的是,您现在可以控制用户输入的密码以添加您的独特要求。

提交后,应用程序会将新密码、用户名和旧密码发送到 API。

如果您不知道如何创建 React App 或 Node API,可以在这里查看详细教程: https://www.techandstartup.com/tutorials/build-api-with-node-express-and-mongodb

最后,如果密码存在,API 可以登录到用户帐户,然后更改密码。 详细步骤可见: https://www.codegrepper.com/code-examples/javascript/firebase+user+change+password如果当前密码不存在,那么 API 可以删除用户并使用想要的密码。 删除一个用户可以看到: https://www.codegrepper.com/code-examples/javascript/firebase+delete+user那么你只要重新创建一个用户即可。 示例代码: https://www.codegrepper.com/search.php?q=firebase%20createUserWithEmailAndPassword

通过这些步骤,您现在可以向用户发送密码重置 email。 email 将是完全独一无二的,因为您将自己设计它。 密码将完全符合您的规格,因为您的 React 应用程序将控制提交时的数据。 而且页面本身看起来更加用户友好,因为它不是默认的 Firebase 页面。

希望这可以帮助您或您的公司使用 email function 解决 Firebase 重置密码。我仍然希望其他用户可能有比这更优雅或基本的解决方案,因为创建一个 API 并为 1 function 托管一个网站是在很多情况下没有吸引力。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM