은 필터를 컨트롤러 클래스에 등록 된 필터 앞에 오는 추상 수퍼 클래스에 등록 할 때 레일에 표시됩니다. 필터 체인 끝에 필터로 인증이라는 메서드를 실행하려고한다고 가정 해보십시오. 내가 알아낼 수있는 유일한 방법은 before_filter를 모든 컨트롤러 클래스의 마지막 필터로 선언하는 것입니다 (그리고 그 중 많은 수가 있습니다). 수퍼 클래스에서이 필터를 선언하고 마지막으로 여전히 실행되도록하는 방법이 있습니까? 마지막으로 실행하려는 이유는 컨트롤러 클래스가 해당 컨트롤러에 대한 인증 요구 사항 만 수정할 수 있기 때문에 최종 인증 필터를 호출하기 전에 이러한 수정 사항을 고려해야하기 때문입니다.슈퍼 클래스의 필터 체인 맨 끝에 필터를 어떻게 추가합니까?
답변
사용 prepend_before_filter
대신 before_filter
또는 append_before_filter
대한 authenticate
콜백을 사용하지 않도록 선택할 수 있습니다.
레일은 지역 일하기 전에, 먼저와 ApplicationController 호출 ... 그래서 당신은 (당신의 예를 사용하여) 같은 것을 할 수 있습니다 : 당신이 당신의 before_filter
콜백을해야합니다 응용 프로그램 컨트롤러에서
, 그리고 대응 방법 그 불려갑니다 : 작업중인 자원 유형 ...에 대한 컨트롤러에서
before_filter :authenticate
def authenticate
# do something
end
이 당신은 다시 정의 할 수 있습니다
/무시 authenticate
def authenticate
# do something else
end
당신은 몇 가지 방법 컨트롤러 클래스에서
skip_before_filter :authenticate, :only => :my_method_without_auth
고마워요.하지만 authenticate 메소드는 특정 허용치가 현재 동작이 '허용'인지 확인합니다. 이러한 허용치는 응용 프로그램 컨트롤러에서 호출 된 필터 전에 다른 필터에서 설정됩니다. 그러나, 내가 콘트롤러 클래스에서 만 트리거 될 수있는 허용치를 추가로 변경하고자하는 콘트롤러가 있고,이 콘트롤러가 인증에 의해 고려되기 위해서는 새로운 허용치가 설정된 후 인증이 실행되어야하므로 authenticate는 컨트롤러 클래스에서 선언되어야합니다. mod는 그 mod를 허용합니다. –
왜 하나의 before_filter 콜백을 가지지 않고 그 메서드를 사용하여 필요한 모든 것을 순서대로 설정해야합니까? – mylescarrick
그 아이디어는 실제로 실행 가능하지 않습니다. 필터가있어 이해할 수있는 방식으로 작업을 나눌 수 있다고 생각합니다. 이 인증 방법 외에도 모든 컨트롤러에서 실행됩니다. 이 컨트롤러는 모두 다른 일을합니다. –
- 1. IMAP 이메일 계정에 이메일 필터를 어떻게 추가합니까?
- 2. 필터 체인 수정 - 또는 필터를 사용하여 요청에 응답하도록 서블릿을 선택하십시오.
- 3. WordPress의 코멘트 배열 끝에 어떻게 추가합니까?
- 4. jquery ajax 필터 체인
- 5. 이 페이지 네이션에 필터 버튼을 어떻게 추가합니까?
- 6. 체인 클래스의 이벤트 발생
- 7. 슈퍼 인 체인 스칼라 특성의 동작
- 8. JQuery 체인 필터 드롭 다운
- 9. 문자열 끝에 임의의 바이트 값을 어떻게 추가합니까? (JavaScript)
- 10. 펄 스크립트의 끝에 여러 개의 POD를 어떻게 추가합니까?
- 11. 누가 내 URL 끝에 슬래시를 추가합니까?
- 12. jQuery는 또한 아약스 호출의 끝에 코드를 추가합니까?
- 13. 필터 체인 실행 순서를 설정하는 방법
- 14. 스프링 보안 필터 체인 정규식 패턴
- 15. 보고서 작성기, 프롬프트 필터, 필터를 무시하는 방법?
- 16. "슈퍼"제네릭을 어떻게 처리합니까?
- 17. 슈퍼 클래스에서 서브 클래스의 메소드를 호출하십시오.
- 18. 슈퍼 컬렉션에서 클래스의 변수에 액세스하는 방법은 무엇입니까?
- 19. Mockito 슈퍼 클래스의 메소드 호출만을 모의하는 방법
- 20. 슈퍼 클래스의 메서드가 서브 클래스의 메서드 대신 호출되는 이유는 무엇입니까?
- 21. TRibbonComboBox에 ItemIndex를 어떻게 추가합니까?
- 22. UIViewController의 뷰를 슈퍼 뷰의 맨 아래쪽에 고정시키는 방법은 무엇입니까?
- 23. 행 끝에 문자 추가
- 24. 좋은 디자인 : 어떻게 슈퍼 클래스
- 25. popen()은 결과 끝에 줄 바꿈 (\ n)을 추가합니까?
- 26. 슈퍼
- 27. ContextMenuStrip을 ToolStripButton에 어떻게 추가합니까?
- 28. Buildout에 종속성을 어떻게 추가합니까?
- 29. FBConnectButton을 어떻게 추가합니까?
- 30. wstring에 어떻게 추가합니까?
그 제안을 주셔서 고마워요,하지만 먼저 실행해야하는 추상 수퍼 클래스에서 메서드를 가지고있어 컨트롤러 클래스에서 prepend_before_filter를 호출하면 먼저 실행해야하는 필터보다 먼저 해당 필터가 밀려납니다. 들어오는 URL). –
아마도 가장 가까운 대답 일 것이지만 원래 질문에는 실제로 대답하지 않습니다. 어쨌든 레일에서 그렇게 할 방법이 없다고 생각합니다. –