【问题标题】:Rails object based permission/authorization engine?基于 Rails 对象的权限/授权引擎?
【发布时间】:2010-03-17 16:21:57
【问题描述】:

我想在我的应用程序中添加“共享文档”功能,例如在 google 文档服务中。如我所见:

用户可以:

  • 可以列出/查看/创建/编辑/删除自己的文档
  • 与所有人共享自己的文档 - 这是一个公共文档
  • 将自己的文档共享给其他具有只读权限的用户
  • 将自己的文档共享给具有读写权限的其他用户
  • 查看自己的文档和他授予读写权限的用户列表
  • 查看外国文件清单
  • 查看/编辑具有读/写权限的外文文档

请告诉我,我的任务首选哪种许可/授权解决方案?

【问题讨论】:

    标签: ruby-on-rails ruby permissions authorization


    【解决方案1】:

    您可以在此处查看一些可用的授权插件:

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

    【讨论】:

    • 感谢您的回答。我已经在那里搜索过了。并查看所有 Ryan 授权相关视频。 cancan(以及 acl9 和 declarative_authorization)无法满足我的需求。
    • 我更新了我的评论以关注 canable,因为从自述文件看来它可以帮助您进行每个对象的授权。
    • 我为基于对象的权限找到的最好的库称为 sanction,不幸的是,它从未打包为 gem,可能已经收集了一些垃圾。 github.com/matthewvermaak/sanction
    猜你喜欢
    • 2021-09-14
    • 1970-01-01
    • 2019-08-05
    • 2012-05-07
    • 2015-01-18
    • 2019-12-08
    • 2018-02-20
    • 2015-03-11
    • 2011-05-07
    相关资源
    最近更新 更多