2013-02-23 2 views
7

My Symfony2 커스텀 인증 프로 바이더 now appears to be working.symfony2 엔티티 사용자 프로 바이더가 커스텀 auth 프로 바이더를 오버라이드

사용자 제공자는

나는 거의 FOSUserBundle을 사용하지만, 난 내 사용자의 이메일 주소가없는 나는 추가 된 기능이나 합병증이 필요하지 않습니다.

그래서 대신 entity provider을 사용하고 있습니다.

API 클라이언트 라이브러리가 나를 대신 처리하기 때문에 인코더를 일반 텍스트로 설정했으나 다른 슬픔 : 사용자가 이제이 사용자 레코드에 대해 인증되었습니다.

엔티티 사용자 공급자를 구현하기 전에 로그인 양식이 올바른 응답을 보냈습니다. 올바른 자격 증명으로 오류가 발생하지 않았고 나쁜 자격 증명이 사용자 정의 "잘못된 사용자/전달 오류"가되었습니다.

이제 자격 증명을 제공하더라도 정확하다는 것을 알게되면 오류 메시지 "잘못된 자격 증명"(as if I'm implementing the UserAuthenticationProvider)이 표시되지만 내 지식은 최고입니다. 내 맞춤 공급자 directly implements the AuthenticationProviderInterface.

그래서 지금 나는 사용자 정의 인증 공급자를 어떻게 든 오버라이드하는 것처럼 엔터티 사용자 공급자를 잘못 구현했다고 가정합니다. 엔터티 사용자 공급자와 사용자 지정 인증 공급자를 동시에 구성하는 올바른 방법은 무엇입니까?security.yml의

파일

관련 섹션

,127,877,333,

편집

This might prove useful. 가장 최근의 마스터 분기에 커밋에 사용자 정의 인증 제공자 (WordnikProvider)이 여전히 실행있어에서

  • ... 마스터 분기에 DIFF의 (a473d354)
  • (ddcfeae2) 여기서 auth 공급자는 더 이상 실행되지 않습니다.더 브레이크 포인트와

편집 2

내가 발견 : 로그인 폼 POST에

  1. , WordnikProvider#supports 따라서 false를 반환하는 UsernamePasswordToken 호출되고있다.
  2. 로그인 양식 POST에서 WordnikListener이 생성되었지만 다른 방법 (attemptAuthentication, requiresAuthentication)이 호출되지 않습니다. 그럼에도 WordnikFactory#createListener도 결코 호출되지 않습니다! 청취자가 구성되는 것은 놀라운 일입니다.
  3. 그러나 login_check GET에서 WordnikListener#requiresAuthentication이라고합니다.
+1

form_login 서비스는 거의 암호가 필요하다고 가정합니다. 암호가 맞지 않는다고 말하는 인코더를 만드십시오. 그렇게하면 한 걸음 더 나아갈 수 있습니다. – Cerad

+0

Cerad, 실제로 문제가 UserAuthenticationProvider에서 "잘못된 자격 증명"으로 발생하는 것으로 보입니다. 오류가 나타납니다. 그 공급자가 왜로드되고 있는지에 대한 완벽한 신비! 인코더가 문제라고 생각하지 않습니다. –

+0

AuthProvider는 사용자 공급자를 통해 사용자를로드 한 다음 엔코더를 사용하여 암호를 확인하여 사용자를 인증합니다. form_login 서비스를 전혀 사용하지 않는다면 꺼내십시오. 하지만 확실히/play_check는 기본 인증 처리기에서 처리 중입니다. – Cerad

답변