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来简化控制器/视图中的授权。