记录级安全性mongodb

时间:2017-01-25 20:27:54

标签: ruby mongodb mongoid

我现在为我的模型提供了某种数据结构,我一直在弄清楚,但其中一个问题是我需要根据用户登录来提供来自mongo的数据。

我想到的其中一种方法是这样的,如果我的对象在mongo中看起来像这样:

{
  record_id: 1,
  property_1: 'some value',
  property_2: 'some value',
  users: [1, 2, 3, 4]
  ...
}

然后是另一个:

{
  record_id: 2,
  property_1: 'some value 2',
  property_2: 'some value 2',
  users: [1, 2]
  ...
}

然后在我拥有的某个页面上,我可以显示给定用户的所有记录。

但我有一个要求,我可以让一些用户访问更多记录和/或更少。我该怎么做呢?

如果我有一个案例,我需要从x个记录中取走访问权限,并为用户提供对y量记录的访问权限。在关系数据库中,我会做这样的事情:

--start transaction--
remove all access for a given user from the records
add all new access
--transaction end--

因此,如果用户刷新页面,他或她只能在更新该用户的访问权限之前查看旧数据,或者只有在整个交易完成后才会发生新数据。

你们是如何在mongo世界中做到这一点的?我是否更改了存储记录的方式,或管理每个用户的行级安全性的方式,以及管理该访问权限?

1 个答案:

答案 0 :(得分:2)

您可以尝试使用redact运算符。因此,每当您需要更改文档而不是整个集合甚至数据库的安全性时,您都可以使用redact来控制访问权限