2014-06-22 3 views
4

로그 아웃 작업을 어떻게 보호 할 수 있습니까? 나는 default configuration을 읽고,Symfony2 로그 아웃 CSRF 보호 : csrf_provider가 인식되지 않습니다

logout: 
    csrf_parameter:  _token 
    csrf_provider:  ~ 
    intention:   logout 

을 설정하지만 캐시를 지우려고 할 때 다음과 같은 오류가 표시 :

[심포니 \ 구성 요소 \ 구성 \ 정의 \ 예외 \의 InvalidConfigurationException] 인식 할 수없는 옵션 " csrf_provider "에서"security.firewalls.main.logout "

Symfony 2.4 + FOSUserBundle 1.3을 사용하고 있습니다.

+0

질문 제목을 바꿔 줄 수 있습니까? 보통 ** 질문에 태그가있는 ** 키워드는 포함하지 않아야합니다. 제목은 키워드로만 구성됩니다. –

+0

확인하셨습니까? http://stackoverflow.com/questions/20350330/unrecognized-options-csrf-provider-under-security-firewalls-form-login? –

+0

@isi 미안하지만, 매우 구체적이고 상상력이 부족하고 영어 실력이 부족하기 때문에 그것을 다시 말할 수는 없습니다. (중재자가 그것을 다시 말해야한다고 생각한다면 - 동의합니다.) – user1636505

답변

14

나는 symfony의 코드를 조사한 결과 옵션이 csrf_token_generator으로 바뀐 것을 발견했습니다. 그럼 내가 봤 거든 관련 issue on GitHub 발견. 그래서 동기화되지 않은 문서의 문제.

최종 솔루션입니다 :

구성 :

# app/config/security.yml 

security: 
    # ... 
    firewalls: 
     # ... 
     your_firewall_name: 
      # ... 
      logout: 
       # ... 
       csrf_token_generator: your_csrf_provider # e.g. form.csrf_provider 

나뭇 가지 템플릿 :

<a href="{{ logout_url('your_firewall_name') }}">Logout</a> 

주, 우리가 logout_url() 대신 logout_path()의 인해 도우미로 사용하고 있는지 버그 (없이 절대 경로 생성 dev 환경에서접미사). 이 나뭇 가지 도우미는 %token_parameter%을 로그 아웃 URI에 추가합니다 (예 : http://example.com/app_dev.php/logout?_csrf_token=36wX6HYU2ASeZBQw_iwKcUDbplmFm4W7Ez-tMaavDNo.

희망 사항이 정보가 도움이 되길 바랍니다.