尝试实施,以便用户只能访问用户正在玩的游戏的游戏数据。 基本上,如果用户是玩家列表的一部分,用户应该能够阅读。我在所有$ GameID中都有参赛选手名单。 所有用户都有自己的唯一用户名,用户名 - > FirebaseID - >用户名值。Firebase规则,限制仅限参与用户访问
我可以得到以下工作,当模拟读取$ GameID中的用户是其中一部分的孩子,但它不给用户访问时,当我在我的应用程序中尝试精简版。
在电话应用:
GamesDataDatabase = FirebaseDatabase.getInstance().getReference("Games");
GamesDataDatabase.limitToFirst(50).addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
......
规则:
"Games": {
"$GameID": {
".read": "root.child('Games').child($GameID).child('metaData').child('players').child(root.child('Users').child(auth.uid).child('username').val()).exists()",
似乎并没有什么区别,如果我取代 “数据” 与root.child( '游戏')子($。游戏ID)
试图东西回来和第四,但似乎并没有能够得到这个规则的工作... :(
如果我要迁移到Cloud Firsestore(新测试版程序),这项工作是否可行? – Mathoa
我认为这可能确实符合这里描述的规则:https://firebase.google.com/docs/firestore/security/secure-data#shallow_queries但我还没有尝试过。 –
不应该有可能为游戏添加read:false,并且由于Firebase实时数据库的构建,它应该检查下一级别(子级)的访问权限吗? 我试过这个,但得到了同样的结果,我的用户在应用程序中没有访问权限(即使模拟允许访问....) – Mathoa