Rails CanCan和动态生成的能力

时间:2011-07-12 11:10:15

标签: ruby-on-rails cancan

我想在基于Mongoid的Rails 3应用程序之上使用CanCan。我想介绍用户,角色和权限的一般模型。基本上,授权系统应在每个动作基础上进行授权。因此,我们希望存储action x roles特权对象。

现在谈到DSL的能力,我们可以在proivilege模型中作为after_save钩子动态生成能力。但这会导致生产模式出现问题,导致这些运行时更改仅影响进行权限更改的服务器进程。

另一方面,人们可以在每个控制器中重新评估所有(用户)的能力,就像before_filter一样。但这减缓了每一个请求。

刚才,我们尚未决定如何解决这个问题。我很感谢每一个建议。

此致 菲利克斯

1 个答案:

答案 0 :(得分:0)

CanCan使用基于User模型上的角色列的简单授权系统。

以下是一些很好的链接: Abilities
 Role Based Authorization

为什么需要动态设置权限?除非你有令人信服的理由这样做,否则你只会引入不必要的复杂性。只需使用正确的功能定义您需要的角色(您可以使用cancan在控制器/操作的基础上执行此操作),然后在创建/更新时分配这些角色。