Firebase实时数据库安全规则-基于角色的安全性

时间:2020-09-11 17:41:52

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

我有一个运行有Firebase实时数据库的应用程序。

我有几个节点: 用户(包含uid,名称和“角色”等用户信息-可以为true或false) 和私人数据(包含每个用户可以自行输入的各种内容)

我正在尝试建立一个管理界面,在该界面中,“ admin”(在users表中如此标记)也可以在其他所有人的私有区域中查看数据。

{
  "rules": {
    "users":{
      ".indexOn": ["uid", "roles"],
        ".read": true,
        ".write": "root.child('users').child(auth.uid).child('roles').child('ADMIN').val() == true",
        } 
    }
}
const UserItemBase = (props) => {
  const [loading, setLoading] = useState(false);
  const [user, setUser] = useState(props.location.state.user);

  const [isAdmin, setIsAdmin] = useState(user.roles.ADMIN);
  const roles = {};

  useEffect(() => {
    //prevent accidental admin change to current user logged in
    if (props.match.params.id !== props.firebase.auth.currentUser.uid) {
      console.log(isAdmin);
      roles[ROLES.ADMIN] = isAdmin;
      props.firebase.user(props.match.params.id).update({ roles: roles });
    }
  }, [isAdmin]);

上面是代码,管理员可以在其中向其他用户授予管理员访问权限或将其撤消。

但是我在访问时遇到了麻烦,并无法使用这些规则对数据进行更改。

data structure

0 个答案:

没有答案