我即将为我的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和重定向并访问我的控制器代码吗?
提前致谢
答案 0 :(得分:1)
当然 - 只需在before_filter
中添加application_controller.rb
和重定向处理程序方法即可。只要您的用户模型有方法“is_admin?”这样可以正常工作。
它与任何其他方法一样安全(实际上, 大多数情况下使用的方法都是这样)。绕过前过滤器的唯一方法是,如果您的代码允许它。实际上,有时您需要允许特定的控制器方法,在这种情况下,您可以使用application_controller.rb
或:except
条件覆盖特定控制器中的:only
过滤器。