嘿,我希望实现一个类似于highrise或facebook的权限系统。
这种问题的问题是,必须在对象的实例上定义权限(可见性)。在我的脑海中,我可以想到为每一条记录保存user_ids或group_ids。这是最好的方法吗?
我正在使用mongodb,所以这应该会让它更容易。虽然我们也可以切换到sql (highrise很可能用sql实现)。
编辑:我最终写了一个使用mongoid的gem,你可以阅读更多关于它的here。
发布于 2011-01-19 03:44:58
@Abhishiv:考虑到这个任务,我会实现某种形式的约定来设置字段的访问权限。
给定一个如下所示的对象:
{
name : "me",
user : "me01234",
salary : "100",
address : "123 Nowhere drive"
}我会通过这样做来添加权限:
{
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' ]
}使用这样的约定,您可以维护文档级访问权限。而且很容易看到如何编写这样的东西。
现在,您通常需要对象和集合本身的访问权限。这让整个过程变得更加干燥。对于这样的事情,我会简单地构建一个" permissions“集合,其中包含DB中每个其他集合的默认权限。
在我的脑海中,我不知道有任何框架可以“开箱即用”地做这件事。我会看一下Mongoid和MongoMapper,看看这种类型的细节是否不适合插件。
发布于 2011-01-18 03:38:22
查看Cancan:https://github.com/ryanb/cancan
发布于 2011-01-18 05:05:34
https://stackoverflow.com/questions/4716758
复制相似问题