2

我即将为我的 Rails 应用程序实施授权。我知道我可以使用 Cancan,但就我而言,我拥有的所有角色都是:用户和管理员。我看到人们总是用角色保护模型(就像 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 和重定向并访问我的控制器代码?

提前致谢

4

1 回答 1

1

当然——只需before_filterapplication_controller.rb. 只要你的用户模型有一个方法“is_admin?” 这将正常工作。

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

于 2012-11-19T01:53:08.277 回答