gpt4 book ai didi

firebase - 如何在 Firebase 身份验证中限制电子邮件域

转载 作者:行者123 更新时间:2023-12-03 22:49:47 24 4
gpt4 key购买 nike

我有一个关于 Firebase 身份验证的问题。实际上,我正在为我的公司制作一个仪表板,并将它托管在 firebase 中。我想将电子邮件身份验证仅限于我的公司域(例如:cat.com)。但是我浏览了 stackoverflow 的答案,发现我可以在数据库中施加规则。但问题是我将使用 Firebase 函数调用外部数据库来获取数据并将其提供给网站(仪表板)。所以没有特定于域的规则将适用于那里。下面是我的仪表板架构的概要
enter image description here
我怎样才能做到这一点?我希望拥有“xxxx@cat.com”的人能够验证和查看仪表板数据

最佳答案

案例 1: 用户已经创建了他们的帐户,并且您希望将一项云功能限制为特定的电子邮件地址。
您可以获取与云函数调用关联的用户信息,并查看他们的电子邮件。如果外部数据库具有正确的电子邮件域,则您可以调用它们。您还应该进行一些 UI 更改,这样用户就不会在没有 @cat.com 的情况下收到错误。

案例 2: 将 Firebase 项目中的所有用户限制为包含 @cat.com 的电子邮件?
如果是这样,您不能直接在 firebase 身份验证中限制电子邮件,因此您必须将用户注册代码粘贴在云功能后面,在那里创建用户帐户。然后,您可以在他们尝试注册时查看他们的电子邮件。
您可以在云函数中使用 Firebase Admin SDK 执行此操作。 docs

admin.auth().createUser({
email: 'user@example.com',
emailVerified: false,
phoneNumber: '+11234567890',
password: 'secretPassword',
displayName: 'John Doe',
photoURL: 'http://www.example.com/12345678/photo.png',
disabled: false
})
.then(function(userRecord) {
// See the UserRecord reference doc for the contents of userRecord.
console.log('Successfully created new user:', userRecord.uid);
})
.catch(function(error) {
console.log('Error creating new user:', error);
});
客户端将使用他们想要的电子邮件和密码调用云函数,在调用此 .createUser 之前,您可以在使用 "dog@cat.com".toLowerCase().endsWith("cat.com") 创建用户之前检查正确的电子邮件。

或者,您可以为@frunkad 提到的用户设置自定义声明:向使用“@cat.com”电子邮件注册的用户授予额外权限,如下所示: Defining roles via Firebase Functions on user creation 。但是,在 OP 的情况下,只有具有“@cat.com”的用户才能注册,因此自定义声明使问题过于复杂。
此外,使用电子邮件域作为访问控制的一种形式听起来也不是一个好主意。在帐户创建过程中,您可以根据电子邮件手动添加对用户文档的访问权限。当您想给某人发送电子邮件但不想让他们访问数据库时会发生什么?

关于firebase - 如何在 Firebase 身份验证中限制电子邮件域,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62977597/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com