Rails授权:我可以为所有操作添加before_filter吗?不使用Cancan

时间:2012-11-18 23:50:51

标签: ruby-on-rails authorization cancan

我即将为我的Rails应用程序实现授权。 我知道我可以使用Cancan,但就我而言,我拥有的所有角色都是:用户和管理员。我看到人们总是用角色来保护模型(就像康康那样)。

我对授权的看法是添加:

 before_filter :redirect_if_not_admin :only => :create, ...

然后:

def redirect_if_not_admin

       if !@user.is_admin?
            redirect_to :root  
end

在我的所有控制器中以及我想限制访问的操作。

Q1。这是否比限制对模型属性的访问权限更不安全?

Q2。有人可以绕过before_filter和重定向并访问我的控制器代码吗?

提前致谢

1 个答案:

答案 0 :(得分:1)

当然 - 只需在before_filter中添加application_controller.rb和重定向处理程序方法即可。只要您的用户模型有方法“is_admin?”这样可以正常工作。

它与任何其他方法一样安全(实际上, 大多数情况下使用的方法都是这样)。绕过前过滤器的唯一方法是,如果您的代码允许它。实际上,有时您需要允许特定的控制器方法,在这种情况下,您可以使用application_controller.rb:except条件覆盖特定控制器中的:only过滤器。