Firebase限制用户写访问权限

时间:2018-10-18 14:47:12

标签: javascript firebase firebase-realtime-database firebase-security-rules

我设置规则来限制用户访问,例如:

.write": "auth != null && !root.child('blockedUsers').hasChild(auth.uid)",

问题是,我不知道如何在客户端使用它。我假设这是重复的问题,但我无法在受限用户访问的实际使用中找到任何东西。

例如,当用户尝试创建评论时,我得到一个错误,即权限被拒绝。那是期望的结果,问题是我该如何检查客户端上的用户写许可权?

我希望有类似user.canWrite之类的东西。我现在所做的只是检查用户是否已通过身份验证,就我所知,还没有提及用户对象中的读/写访问规则。

 if (this.props.user) {
     firebase.database().ref(`comments/${key}/rating`)
     .transaction(
         (value) => (value += rateValue)
     )}

感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

通过编写规则,您将为经过身份验证的用户设置授权,以写入数据库的特定节点。

因此,在客户端中,您只需确保您的用户已通过身份验证。这应该通过Firebase身份验证完成。在此处查看网络文档:https://firebase.google.com/docs/auth/web/start

如果用户无法写入此特定节点(由于未通过身份验证或由于其uid列在blockedUsers下),他/她将收到以下错误消息:前端。


更新以下我们的评论:

如果您希望能够“根据用户的角色或访问级别来修改客户端用户界面”,则应使用另一种机制来设置授权:自定义声明。在此处查看文档:{​​{3}}。

在这种情况下,在安全规则中,您将不会检查“ blockedUsers”节点下是否存在记录,而是会按照文档中的说明检查附加在令牌上的Claims。