如何实现像highrise或facebook这样的权限系统

Abh*_*ena 6 sql ruby-on-rails mongodb mongoid

嘿,我希望实现像高层建筑或Facebook 一样的权限系统.

这种问题的问题是必须在对象的实例(可见性)上定义权限.在我的脑海中,我可以考虑在每个记录的哈希中保存user_ids或group_ids.这是最好的方法吗?

我正在使用mongodb,以便更容易.虽然我们也可以切换到sql(高层可能与sql一起).

编辑:我最终写了一个与mongoid一起工作的宝石,你可以在这里阅读更多相关信息

Gat*_* VP 2

@Abhishiv:鉴于此任务,我将实现某种形式的约定来按字段设置访问权限。

给定一个如下所示的对象:

{
  name : "me",
  user : "me01234",
  salary : "100",
  address : "123 Nowhere drive"
}
Run Code Online (Sandbox Code Playgroud)

我会通过执行以下操作来添加权限:

{
  name : "me",
  user : "me01234",
  salary : "100",
  address : "123 Nowhere drive"
  p_salary : [ 'g/accounting', 'g/management', 'u/owner' ]
  p_address : [ 'g/accounting', 'g/hr', 'u/me' ]
}
Run Code Online (Sandbox Code Playgroud)

通过这样的约定,您可以维护文档级访问权限。很容易看出如何对这样的事情进行编程。

现在,您通常需要对象和集合本身的访问权限。这使得整个过程更加干燥。对于这样的事情,我只需构建一个“权限”集合,其中包含数据库中每个其他集合的默认权限。

在我的脑海中,我不知道有任何框架可以“开箱即用”。我会查看 Mongoid 和 MongoMapper,看看这种类型的细节是否不适合插件。