在我的网站上,我有两个用于登录的门户。门户 A 是学习者的登录名。门户 B 是教师的登录名。学习者和教师的账户都位于同一个 Firebase 项目中,也就是说,两种类型的账户都位于同一个身份验证空间中。两个门户都使用相同的简单登录代码:firebase.auth().signInWithEmailAndPassword(user_email, user_password).catch(function(error) {})目前,学习者可以在两个门户网站上登录,教师也可以登录。我想要做的是阻止教师登录学习者门户,反之亦然。我不确定如何实现这一点。我已经在setCustomUserClaim身份验证令牌上为两种类型的帐户提供了一个身份。但是我只能在用户登录后才能获取身份验证令牌,而不是在我想之前。另外,我有一个 Firestore 集合,其中存储了用户的所有信息,包括他们的身份。但是每个用户的文档都使用其对应的 UID 命名。后者也可以在他们登录后被抓住。关于如何实现这一点的任何想法?
1 回答
慕妹3146593
TA贡献1820条经验 获得超9个赞
Firebase 身份验证没有内置方法来区分这两种类型的用户。它只是验证用户输入的凭据,并确保它们是正确的。如果某些用户只能访问某个应用程序或某些数据,则这些信息必须来自您。
上述内容很重要,因此我将重复一遍:Firebase 身份验证允许所有用户进行身份验证,只要他们提供正确的凭据即可。它无法根据特定于应用程序的信息(例如您的用户类型)来阻止对身份验证的访问。这种类型的授权逻辑是您应用程序的一部分,无论是代码还是服务器端安全规则(如果您使用 Firebase 数据库)。
实现场景的常用方法是将有关用户类型的信息添加到数据库(例如 Firebase 的实时数据库或 Cloud Firestore)。例如,您可以在此数据中存储所有教师的电子邮件地址。
现在有了这些信息,您的代码就可以确定登录到该站点的人是否是教师。如果他们是登录学生网站的教师,您可以重定向他们,反之亦然。
添加回答
举报
0/150
提交
取消