在我的网站上,我有两个登录门户。门户A是为学习者登录。门户B是为教师登录。
学习者和教师的帐户都位于同一个Firebase项目中,换句话说,两种类型的帐户都位于相同的身份验证空间中。这两个门户使用相同的简单登录代码:
firebase.auth().signInWithEmailAndPassword(user_email, user_password).catch(function(error) {})
目前,学习者可以在两个门户网站登录,教师也可以登录。我想做的是阻止老师登录到学习者的门户网站,反之亦然。我不知道如何实施。我创建了一个setCustomUserClaim,以便在身份验证令牌上为这两种类型的帐户提供标识。但是,我只能在用户登录后才能获取auth令牌,而不是在我想之前。此外,我有一个Firestore集合,存储用户的所有信息,包括他们的身份。但是每个用户的文档都用相应的UID命名。后者也可以在登录后被抓取。对如何实现这个有什么想法吗?
发布于 2020-03-23 14:37:59
Firebase身份验证没有内置的方式来区分这两种类型的用户。它只需验证用户输入的凭据,并确保它们是正确的。如果某些用户只能访问某个应用程序或特定数据,则这是必须来自您的信息。
上面的内容很重要,所以我要重复一遍: Firebase身份验证允许所有用户进行身份验证,只要他们提供正确的凭据。它无法阻止基于应用程序特定信息(如用户类型)的身份验证访问。这种类型的授权逻辑是应用程序的一部分,包括代码和服务器端安全规则(如果使用Firebase数据库)。
实现场景的一种常见方法是将有关用户类型的信息添加到数据库中(如Firebase的实时数据库或Cloud )。例如,在这些数据中,您可以存储所有教师的电子邮件地址。
现在,有了这些信息,您的代码就可以确定登录到网站的人是否是教师。如果他们是注册到学生网站的老师,你可以重定向他们,反之亦然。
https://stackoverflow.com/questions/60813641
复制相似问题