我正在构建一个具有不同类型用户的应用,这些用户必须能够根据自己的身份访问不同的信息中心。与学生,老师和学校主任相似。 每个都有单独的仪表板,他们必须在认证时指向它们。
我使用firebase作为我的后端支持。在将它们验证到firebase之后,我将它们保存到各自的DB中,如下所示。
问题是因为firebase将它们全部视为用户并为身份验证中的每个人分配一个UID,当他们重新登录时,知道谁是学生,教师或导演的最佳方式是什么,以便他们可以被定向到他们各自的仪表板。
答案 0 :(得分:1)
您需要为您的应用程序使用基于角色的身份验证系统。 根据这些用户角色,您可以将用户重定向到其特定仪表板或分配权限。
对于Firebase,基于角色的数据库应该如下所示:
{
"roles" : {
"teacher" : true,
"student" : true,
"director" : {
"335Fq6U6gZPWNEyDJRZd6ZYGkvn1" : true
}
},
"secret_data" : {
"access_code" : 390399333,
"users" : {
"335Fq6U6gZPWNEyDJRZd6ZYGkvn1" : true
}
},
"users" : {
"335Fq6U6gZPWNEyDJRZd6ZYGkvn1" : {
"username" : "shakti"
}
}
}
并且安全角色应该是这样的:
{
"rules" : {
".read" : false,
".write" : false,
// Secret data is only available to paid users.
"secret_data" : {
".read": "(root.child('roles').child('director').hasChild(auth.uid))
&& (data.child('users').hasChild(auth.uid))",
"users" : {
"$uid" : {
".read" : "($uid === auth.uid)"
}
}
}
}
}
请参阅:https://firebase.google.com/docs/database/security/user-security
和github:https://gist.github.com/sararob/331760829a9dcb4be3e7
上的SO答案