Rails 3中的属性级授权

时间:2011-03-04 17:11:33

标签: ruby-on-rails-3 frameworks attributes authorization

我正在使用devise进行身份验证,我正在寻找一个允许我声明特定模型属性的编辑权限的授权框架。

我的应用程序中有三个不同的角色:教师,家长和学生。学生模型belongs_to Family。当教师创建学生时,他们可以设置家庭关联。但是,当家长访问学生的编辑页面时,他们应该无法更改该关联,只能查看它。

在视图中,很容易根据查看对象的方式更改表单(例如禁用或不禁用族选择输入),但精心制作的表单可以解决这个问题。当有人试图更改不允许更改的属性时,我需要的是会引发某种授权异常的内容。

我目前正在关注declarative_authorization,但似乎不足以限制对属性的更改,只限制整个模型。

2 个答案:

答案 0 :(得分:0)

我最终使用了新的MassAssignmentSecurity功能,虽然看起来它与accepts_nested_attributes_for一起使用效果不佳。

答案 1 :(得分:0)

我意识到我的答案迟了2年。对于你需要的是一个足够精细的授权框架。

XACML,OASIS的标准提供了这一点。它可以处理任意数量的属性。

请在此处查看我的详细答案:Rails 4 authorization gem