declarative_authorization을 사용하여 Rails3 컨트롤러의 보안을 시도하고 있습니다.선언적 승인 filter_access_to
컨트롤러에는 7 가지 RESTful 동작, 3 가지 사용자 지정 멤버 동작 (활성화, 비활성화, 복사) 및 하나의 사용자 지정 수집 동작 (공개)이 있습니다. 그러나 '공개'작업은 하나의 레코드 만 반환합니다.
인증 된 사용자는 사용자 지정 컬렉션 작업 (공용) 만 사용할 수 있어야합니다. 나머지는 current_user에서만 사용할 수 있습니다.
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 개 사용자 지정 작업은 routes.rb 파일에 정의되어 있습니다 :
resources :users do
resources :foos do
collection do
get :public
end
member do
post :activate, :copy, :deactivate
end
end
end
사용자 : has_many, FOOS; Foo : 사용자는 belongs_to입니다. FoosController에 정의 된 '표준'액세스 제어 (filter_resource_access : nested_in => : user)는 7, RESTful 액션에 대한 액세스를 제어하는 것으로 보이지만 다른 4 (예상대로)에 대한 액세스를 제어하지 못합니다.
나는에 FooController을 변경하는 경우 :
filter_access_to :all, :nested_in => :users, :attribute_check => true
I "는 ID없이 푸를 찾을 수 없습니다"라는 오류를 얻을.
질문 :
- 문서는 제안 것 : before_filter는 filter_access_to를 사용하는 경우 푸 모델을로드하기 위해 자동으로 호출됩니다. 나는 틀린가? filter_access_to의 추가 구성이 필요합니까? before_filter?를 수동으로 구성해야합니까?
- 또한 용도에 맞게 모델에 using_access_control을 추가해야합니까? 컨트롤러에 액세스 제어가있을 때 액세스 제어를 모델에 추가해야 할 때 나는 약간 명확하지 않습니다.
- 설명서에는 'create'권한이 설명되어 있습니다. privilege : create, : includes => : new. 또한 : 새로운 작업에는이 권한이 자동으로 해당 이름의 결과로 : create 작업을 포함합니까?
- authentication_rules.rb 파일이 변경된 경우 새 규칙을 적용하려면 서버를 다시 시작해야합니까?
이 질문에 대한 답변을 찾으셨습니까? 나는 비슷한 문제에 직면하고있다. – Shreyas