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의
파일
- /app/config/security.yml
- /src/WordRot/PlayBundle/Security/Authentication/Provider/WordnikProvider.php
관련 섹션
,127,877,333,편집
This might prove useful. 가장 최근의 마스터 분기에 커밋에 사용자 정의 인증 제공자 (WordnikProvider)이 여전히 실행있어에서
- ... 마스터 분기에 DIFF의 (a473d354)
- (ddcfeae2) 여기서 auth 공급자는 더 이상 실행되지 않습니다.더 브레이크 포인트와
편집 2
내가 발견 : 로그인 폼 POST에
- , WordnikProvider#supports 따라서
false
를 반환하는 UsernamePasswordToken 호출되고있다. - 로그인 양식 POST에서
WordnikListener
이 생성되었지만 다른 방법 (attemptAuthentication
,requiresAuthentication
)이 호출되지 않습니다. 그럼에도WordnikFactory#createListener
도 결코 호출되지 않습니다! 청취자가 구성되는 것은 놀라운 일입니다. - 그러나
login_check
GET에서WordnikListener#requiresAuthentication
이라고합니다.
form_login 서비스는 거의 암호가 필요하다고 가정합니다. 암호가 맞지 않는다고 말하는 인코더를 만드십시오. 그렇게하면 한 걸음 더 나아갈 수 있습니다. – Cerad
Cerad, 실제로 문제가 UserAuthenticationProvider에서 "잘못된 자격 증명"으로 발생하는 것으로 보입니다. 오류가 나타납니다. 그 공급자가 왜로드되고 있는지에 대한 완벽한 신비! 인코더가 문제라고 생각하지 않습니다. –
AuthProvider는 사용자 공급자를 통해 사용자를로드 한 다음 엔코더를 사용하여 암호를 확인하여 사용자를 인증합니다. form_login 서비스를 전혀 사용하지 않는다면 꺼내십시오. 하지만 확실히/play_check는 기본 인증 처리기에서 처리 중입니다. – Cerad