我正在尝试使用声明性授权来保护Rails3控制器。
只有自定义收集操作(public)应可用于已验证的用户;其余操作仅可用于当前用户。
has_permission_on :foos, :to => :public
has_permission_on :foos, :to => [:full_control, :copy, :activate, :deactivate] do
if_attribute :user => is {user}
end
privilege :full_control, :includes => [:index, :show, :new, :create, :edit, :update, :destroy]
中定义了4个自定义操作路由.rb文件:
resources :users do
resources :foos do
collection do
get :public
end
member do
post :activate, :copy, :deactivate
end
end
end
FoosController中定义的“标准”访问控制(filter\u resource\u access:nested\u in=>:user)似乎控制对7个RESTful操作的访问,但无法控制对其他4个操作的访问(如预期的那样)。
当我将FooController更改为:
filter_access_to :all, :nested_in => :users, :attribute_check => true
我得到一个错误,写着“找不到没有ID的Foo”。
问题:
-
文档似乎建议在使用filter\u access\u to时自动调用a:before\u filter来加载Foo模型。我弄错了吗?我需要额外的过滤器配置吗?我是否需要手动配置a:before\ u filter?
-
出于我的目的,我是否还需要将using\u access\u control添加到模型中?当控制器中有访问控制时,我不太清楚什么时候需要向模型添加访问控制。
-
文档描述了一个名为“create”的特权,它被定义为:privilege:create,:includes=>:new。此外,对于:new操作,此权限是否自动包含:create操作作为其名称的结果?
-
如果身份验证_规则.rb文件已更改,是否需要重新启动服务器才能应用新规则?