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

2023-12-12

我想在我的应用程序中添加“共享文档”功能,就像在谷歌文档服务中一样。据我所知:

用户可以:

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

请告诉我,哪种权限/授权解决方案最适合我的任务?


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

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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Rails 基于对象的权限/授权引擎? 的相关文章

随机推荐

  • 如何重复数据框?

    重复一次 data frame 很容易 mt2 lt rbind mtcars mtcars 但是一般来说 类似 R 的方法是什么 如果我想要 10 份mtcars在一起我可以 mt10 lt mtcars for i in 2 10 mt
  • Pry-Remote 未触发 Rails 4

    Problem 在另一个分支升级到 Rails 4 并尝试上次有效的解决方案后使用 Pow on Rails 4 进行遥控撬 我仍然发现新的 Rails 4 和 Pry 调试器有困难 我在运行什么 rvm 1 26 11 latest by
  • 支持 iOS 8 的设备在代码更新后未收到推送通知

    我最近将我的一台测试 iPhone 升级到了 iOS 8 然后升级了 PUSH 注册码 如下 使用 xCode 6 BOOL hasNotificationsEnabled NSString iOSversion UIDevice curr
  • 将 CopyToDataTable 与“new {..}”LINQ 查询一起使用时出现异常

    从这段代码中 我可以按照我的预期调用 bmwCars CopyToDataTable var bmwCars from car in dataTable AsEnumerable where car Field
  • 如何将 ClientScript.RegisterClientScriptBlock 与内联代码一起使用?

    我有 aspx 页面 其中没有隐藏代码 服务器端代码写在带有 runat 服务器属性的标签内 如果我使用 ClientScript RegisterClientScriptBlock this GetType Email GetEmail
  • SQLite游标中moveToFirst()的用途是什么

    我是一个编程新手 我在互联网上找到了这段代码 它运行得很好 Cursor c db query DataBase TB NAME new String DataBase KEY ROWID DataBase KEY RATE DataBas
  • 如何将不常见格式的字符串转换为日期时间

    我使用的是 NET 3 5 并且有一个日期 该日期以字符串形式出现 格式如下 2009 年 1 月 20 日星期二 20 47 43 GMT 第一个问题 该格式的名称是什么 第二个问题 将此字符串转换为日期时间的最简单 最清晰的方法是什么
  • 如何在 iPad 上的 UIWebView 中上传文件?

    我正在开发一个 iPad 应用程序 我的应用程序的一个组件有一个 UIWebView 其网页有一个浏览按钮来上传文件 在本例中为照片 我知道应用程序无法访问文件系统 但我在 App Store 上看到过可以通过照片实现此功能的应用程序 其中
  • 视图的边框纹理

    有没有办法设置边框纹理LinearLayout或任何其他View 由于屏幕尺寸不同 我不能只将图像设置为背景 这是我正在讨论的纹理示例 我尝试使用九片 但它拉伸了应该重复的白线 Draw 9 patch 工具的截图 您可以使用shape像这
  • PackageInfo LoadLabel 性能缓慢

    我正在为 Android 编写一个应用程序 其中获取应用程序的标签 实际名称 非常慢 特别是这段代码的性能非常糟糕 packageInfo loadLabel pm 只是为了给您一些指标 在安装了 400 个应用程序的 Android 设备
  • NES(6502组装)精灵动作

    我目前正在开发 NES 6502 组装游戏 但我不明白如何使精灵移动 我认为它应该是这样工作的 loop LDA 200 will load into the A register the content of address 200 wi
  • IntelliJ:使用 docker jvm 还是 docker maven?

    我有一个 docker jvm 实例 我从命令行使用它来编译和运行 java 代码 IntelliJ 的项目配置要求我指向文件系统上的 jvm 所以 我想知道 我可以配置intellij来使用这个docker容器吗 我想我可以配置一个 do
  • Socket.io 客户端:用一个处理程序响应所有事件?

    是否可以让 socket io 客户端响应所有事件 而无需单独指定每个事件 例如 像这样的东西 显然现在不起作用 var socket io connect http myserver socket on function listen t
  • 为什么 C++ 中析构函数运行两次?

    在做编程作业时 我似乎在基本的 C 概念上遇到了困难 我在程序中发现了该错误 这是由于我的析构函数运行次数超出了我的预期造成的 这是一个代码示例 演示了我做错了什么 直到最基本的部分 include
  • 添加/提交文件到所有分支

    假设我在一个分支上并且索引是脏的 我对文件 x 进行了更改 并且还进行了一些其他更改 有没有办法将文件 x 添加到所有现有分支 像这样的东西 usr bin env bash current branch git rev parse abb
  • 复杂的 git rebase 操作

    看着git rebase手册页 我没有看到任何看起来像我想要的图表 除了有些图表似乎做了与我想要的相反的事情 并且玩弄 onto也没有得到我想要的 让我看看是否可以画出像图中那样的图表git rebase手册页 左侧的竖线是为了使 Mark
  • 如何使用 python 访问 Azure AD 组和用户详细信息?

    params urllib urlencode Specify values for the following required parameters api version 1 5 tenant id vvvvvvvvXXXXXX he
  • Java 中的调度异常

    我正在开发一个任务 需要从给定的 URL 下载文件 其中一个要求是它可以处理网络故障和异常 在我的实现中 我有一个 DonwloadManager 为每个 URL 分配一个线程 以免阻塞 问题是我不确定如何通过代码模拟失败和异常 我尝试使用
  • 如何为 Cydia 和越狱的 iPhone 开发应用程序

    我开始为 iPhone 开发应用程序 我想开发一个特定的应用程序 但苹果肯定会拒绝它 所以我想为 Cydia 开发它 因为我认为它很有用 我试图弄清楚如何使用 Theos 和 XCode 来创建我的应用程序 但我什么都不懂 如果你们中的一些
  • Rails 基于对象的权限/授权引擎?

    我想在我的应用程序中添加 共享文档 功能 就像在谷歌文档服务中一样 据我所知 用户可以 可以列出 查看 创建 编辑 删除自己的文档 与所有人共享自己的文档 它是公共文档 将自己的文档共享给具有只读访问权限的其他用户 将自己的文档共享给具有读