2013-02-21 2 views
0

이것은 계속 my last question입니다.Symfony2가 사용자 지정 인증 공급자를로드하지 않고 DaoAuthenticationProvider를로드합니다.

안녕,

제가 구현있어하는 Symfony2 응용 프로그램 순서에서 사용자 지정 인증 공급자는 Wordnik REST API에 대해 인증합니다.

(!) Fatal error: Cannot access parent:: when current class scope has no parent in /[..]/WordRot/vendor/symfony/symfony/src/Symfony/Component/Security/Core/Authentication/Provider/UserAuthenticationProvider.php on line 43

당신은 전체 스택 트레이스 here를 볼 수 있습니다 응용 프로그램로드에

, 상관없이 요청 경로, 이것은 내가 얻을 예외입니다.

18 0.0217 1922792 Symfony\Component\Security\Core\Authentication\Provider\DaoAuthenticationProvider->__construct() ../appDevDebugProjectContainer.php:3071

을하지만 내 구성 아무도 그것을 확장하는 업체, 또는 아무것도를 의미하지 : 추적의 마지막 줄에 두 번째

그것이DaoAuthenticationProvider를로드 것을 알 수있다. 내 사용자 지정 공급자는 AuthenticationProviderInterface을 직접 구현합니다.

그래서 내 구성이 잘못되었다고 가정하고 어딘가에 명시 적으로 WordnikProvider을 설정해야한다고 가정하지만 어디에 있는지 잘 모르겠습니다! 연구는이 문제에 대한 단서를 제공하지 못했습니다.

도움이 될 것입니다.

파일

+0

FYI : 공급 업체 폴더가 손상되었습니다. – hacfi

답변

1

이 라인은 $ this- 반환> authenticationManager-> 인증 (새 WordnikUserToken ($ 사용자 이름, $ 암호, $ this-> providerKey)); WordnikListener에서 Symfony \ Component \ Security \ Core \ Authentication \ AuthenticationProviderManager (classes.php) 로 이동합니다. $ this-> provider는 DaoAuthentificationProvider, WordnikProvider 및 AnonymousAuthentificationProvider입니다. DaoAuthentificationProvider에서 지원하는 메소드는 다음과 같습니다. supports ($ token) : return $ token instanceof UsernamePasswordToken & & $ this-> providerKey === $ token-> getProviderKey();

false를 반환하므로 다음 줄에 WordnikProvider가 반환됩니다.

오 .. 오류가 생성자에 있습니다. parent :: __ construct ($ userChecker, $ providerKey, $ hideUserNotFoundExceptions); 실패로 보인다. PHP 5.4.10 정도를 실행하면 오류가 없습니다 !!

rm -rf vendor와 composer를 다시 설치하거나 다른 PHP 버전을 사용해보십시오 !!

+0

벤더를 제거하고 다시 설치하는 것은이 오류를 우회하여'bootstrap.php.cache' ('update' 또는'install'을 실행했는지 여부에 따라)에서 매우 기괴한 두 가지 "클래스를 찾을 수 없음"오류를 밝혀 냈습니다. 권장대로 필자는 composer.phar를 업그레이드하고 repo의 새로운 복제본에 모든 공급 업체를 다시 설치했으며 WordnikProvider를로드하는 데 더 이상 문제가 없었습니다! 당신의 도움을 주셔서 감사합니다. –

0

A는 일주일 전에 이와 같은 것을 만들어야했습니다. and와 나는 사용자 정의 사용자 공급자를 만들었는데, 여기서 간단히 api를 호출하고 응답을 사용하여 사용자를 만들지 여부를 결정합니다.

나는이 읽기 권합니다 :

http://symfony.com/doc/2.0/cookbook/security/custom_provider.html

+0

답장을 보내 주셔서 감사합니다. András. 사용자 정의 UserProvider를 작성하는 방법에 대해 읽었지만 지금 구현하려고하는 것은 사용자 정의 AuthenticationProvider입니다. 이론적으로 Logical을 분리하고 AuthenticationProvider 내에서 API에 대한 인증을 처리합니다. –