Rails에서 before_filter 건너 뛰기
명확성을 위해 이름과 개체가 단순화되었습니다. 기본 개념은 동일하게 유지됩니다.
나는 3 컨트롤러가 : dog
, cat
,와 horse
. 이러한 컨트롤러는 모두 컨트롤러에서 상속됩니다 animal
. 컨트롤러 animal
에는 사용자를 다음과 같이 인증하는 이전 필터가 있습니다.
before_filter :authenticate
def authenticate
authenticate_or_request_with_http_basic do |name, password|
name == "foo" && password == "bar"
end
end
의 show
작업 dog
에서 모든 사용자에게 공개 액세스 권한이 있어야합니다 (인증 건너 뛰기).
에 대한 인증을 별도로 작성하려면 dog
다음과 같이 할 수 있습니다.
before_filter :authenticate, :except => :show
그러나 dog
에서 상속되었으므로 animal
컨트롤러 별 작업에 액세스 할 수 없습니다. 추가 :except => :show
에서 animal
컨트롤러하면에 대한 인증 건너 뜁니다뿐만 아니라 show
의 행동을 dog
뿐만 아니라, 그 cat
와 horse
. 이 동작은 바람직하지 않습니다.
에서 상속하는 동안 의 show
작업에 대해서만 인증을 건너 뛸 수있는 방법은 무엇입니까?dog
animal
class Dog < Animal
skip_before_filter :authenticate, :only => :show
end
필터 및 상속에 대한 자세한 내용은 ActionController :: Filters :: ClassMethods 를 참조하십시오 .
주어진 두 대답은 절반 맞습니다. 모든 개 동작이 열리지 않도록하려면 다음과 같이 'show'동작에만 적용하도록 skip_before_filter를 한정해야합니다.
class Dog < Animal
skip_before_filter :authenticate, :only => :show
end
이를 위해 skip_before_filter를 사용할 수 있습니다.
Rails API에 설명되어 있습니다.
귀하의 예에서는 다음 dog
을 포함해야합니다.
skip_before_filter :authenticate
rails 4를 사용하는 작은 업데이트는 지금 skip_before_action :authenticate, :only => :show
이며 before_filters가 before_action
대신 사용해야 합니다.
참고 URL : https://stackoverflow.com/questions/2390178/skip-before-filter-in-rails
'Program Tip' 카테고리의 다른 글
프로토 타입으로 이벤트 트리거 (0) | 2020.11.30 |
---|---|
django 템플릿 시스템, 모델 내부에서 함수 호출 (0) | 2020.11.30 |
산발적으로 발생하는 버그를 어떻게 재현합니까? (0) | 2020.11.30 |
프로그래밍 방식으로 현재 페이지 가져 오기 (0) | 2020.11.30 |
HTML 캔버스 전체 화면 (0) | 2020.11.30 |