我正在使用Firebase进行用户身份验证。
假设我有几个使用应用程序的组织,每个组织都有自己的员工人数。我想知道将用户重定向到其组织的Web应用程序实例的最佳模式是什么。
我的数据库具有以下路径/表:
/OrganizationA/somedata
/organizationB/somedata
/organizationC/somedata
假设Alex属于组织A,他去mywebsite / login并输入了用户名和密码。我怎么能告诉我应该将他重定向到组织A?
我的直觉是我应该有一张桌子
/profiles/userId/somedata
这样,当用户成功登录时,我在此表中检查他有权访问的组织,然后再次将他重定向到该组织(假设他具有许可)。
但是,在非常有组织的情况下,我有一个雇员表,其中包含与该雇员有关的所有信息
/OrganizationA/employees/userId/userInfo
我想知道是否有更好的方法? 如前所述,我正在使用Firebase API来管理注册,登录,身份验证等。
提前谢谢!
答案 0 :(得分:1)
由于您使用Firebase进行用户身份验证,因此您应该能够在Firebase本身中将用户的个人资料作为用户属性进行维护。
对于每个用户有资格访问的组织,他们可以在Firebase中维护一个相应的组织标识符作为用户属性。
例如用户X具有以下属性
organisation_keys:{OrganisationA,OrganisationB}
用户Y具有以下属性
organisation_keys:{OrganisationC}
一旦用户通过Firebase进行身份验证并转到您的Web应用程序,您就可以在应用程序中访问经过Firebase身份验证的用户的属性,并通过其拥有的属性找到他们所属的组织,并确定将用户重定向到何处。
>更新:
同时,您在问题中描述的解决方案也不错。您可以在表中维护用户的访问权限详细信息 在您自己的应用程序中。
如果您打算将来用其他联合身份验证提供程序替换Firebase身份验证,那么将用户配置文件保留在应用程序自己的表中可能更有意义。
答案 1 :(得分:1)
您不检查权限,请先阅读已登录用户的属性,然后使用该属性的值,例如organization: "red"
至window.location.path = "/red"
。
就您所说的Firebase安全规则而言,这些权限决定了Firebase是否允许读取或写入请求的数据。