我设置规则来限制用户访问,例如:
.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)
)}
感谢您的帮助。
答案 0 :(得分:0)
通过编写规则,您将为经过身份验证的用户设置授权,以写入数据库的特定节点。
因此,在客户端中,您只需确保您的用户已通过身份验证。这应该通过Firebase身份验证完成。在此处查看网络文档:https://firebase.google.com/docs/auth/web/start
如果用户无法写入此特定节点(由于未通过身份验证或由于其uid
列在blockedUsers
下),他/她将收到以下错误消息:前端。
更新以下我们的评论:
如果您希望能够“根据用户的角色或访问级别来修改客户端用户界面”,则应使用另一种机制来设置授权:自定义声明。在此处查看文档:{{3}}。
在这种情况下,在安全规则中,您将不会检查“ blockedUsers”节点下是否存在记录,而是会按照文档中的说明检查附加在令牌上的Claims。