首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >存储用户数据的扁平安全性

存储用户数据的扁平安全性
EN

Stack Overflow用户
提问于 2016-04-28 14:33:43
回答 1查看 90关注 0票数 0

我想创建一个拥有大量用户数据的应用程序。假设每个用户跟踪每个任务的时间。如果我把它平放起来,它会是这样的:

代码语言:javascript
复制
{
    users: {
        USER_ID_1: {
            name: 'Mat',
            tasks: {
                TASK_ID_1: true,
                TASK_ID_2: true,
                ...
            }
        },
    },
    tasks: {
        TASK_ID_1: {
            start: 0,
            end: 1
        },
        TASK_ID_2: {
            start: 1,
            end: 2
        }
    }   
}

现在,我想查询并获取用户的所有任务信息。目前的数据很小。从他们的指南:https://www.firebase.com/docs/web/guide/structuring-data.html它说(接近尾声)“.直到我们进入数以万计的记录.”也解释不了怎么处理。

因此,我的问题如下。我知道我们不能通过安全性进行过滤,但是我可以使用安全性来限制人们的访问权限,然后在用户id的基础上进行搜索吗?然后,我的结构将转向以下几个方面:

代码语言:javascript
复制
{
    users: {
        USER_ID_1: {
            name: 'Mat'
        }
    },
    tasks: {
        TASK_ID_1: {
            user: USER_ID_1,
            start: 0,
            end: 1
        },
        TASK_ID_2: {
            user: USER_ID_1,
            start: 1,
            end: 2
        },
        ...
    }   
}

然后,我将设置我的安全规则,只允许创建任务的用户访问每个任务,我的ref查询如下所示:

代码语言:javascript
复制
var ref = new Firebase("https://MY_FIREBASE.firebaseio.com/");

$scope.tasks = $firebaseArray(ref.child('tasks/')
    .orderByChild('user')
    .startAt('USER_ID_1')
    .endAt('USER_ID_1'));

这就是我该怎么安排的吗?我的查询工作正常,但我不确定一旦引入了一个用户看不到另一个用户任务的安全性,它是否会工作。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-04-28 15:05:21

您已经读过不能使用安全规则来筛选数据。即使是创造性的数据建模也改变不了这一点。:-)

要正确保护对任务的访问,您需要如下所示:

代码语言:javascript
复制
"tasks": {
  "$taskid": {
    ".read": "auth.uid === data.child(user).val()"
  }
}

这样,每个用户都只能读取自己的任务。

但是有了这些规则,您的查询就不能工作了。在这里,您的查询最核心的内容是从tasks读取:

代码语言:javascript
复制
ref.child('tasks/')...some-filtering...on(...

由于您的用户没有对tasks的读取权限,此读取操作将失败。

如果您给用户在tasks上的读取权限,那么读取和查询就可以工作,但是用户也可以读取您不想让他们访问的所有任务。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36917793

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档