Rails基于对象的权限/授权引擎?

我想在我的应用中添加“共享文档”function,就像在谷歌文档服务中一样。 正如我所见:

用户可以:

  • 可以列出/查看/创建/编辑/删除自己的文档
  • 向所有人分享自己的文件 – 它是一份公共文件
  • 将自己的文档共享给具有只读访问权限的其他用户
  • 将自己的文档共享给具有读写访问权限的其他用户
  • 查看他允许读写的自己的文档和用户列表
  • 查看外国文件清单
  • 查看/编辑具有读/写权限的外部文档

请告诉我,为我的任务提供哪些权限/授权解决方案?

您可以在这里查看一些授权插件:

http://www.ruby-toolbox.com/categories/rails_authorization.html

至于对象级授权/许可,看起来像canable可以这样做:

http://github.com/jnunemaker/canable

从自述文件中的示例:

class Article include MongoMapper::Document include Canable::Ables userstamps! # adds creator and updater def updatable_by?(user) creator == user end def destroyable_by?(user) updatable_by?(user) end end 

你还可以定义一个viewable_by? 方法。 您仍然需要在文档模型上使用某种权限字段或关联,但之后您可以使用canable来简化控制器/视图中的授权。