Symfony2 won't load custom authentication prov

2019-02-21 00:14发布

This is a continuation of my last question.

Hi,

I'm implementing, in a Symfony2 application, a custom authentication provider in order to authenticate against the Wordnik REST API.

On application load, no matter what request path, this is the exception I get:

( ! ) 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

You can see the full stacktrace here.

Second to last line in the trace reveals that it is loading the DaoAuthenticationProvider:

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

But none of my configuration refers to that provider, or anything that extends it. My custom provider directly implements the AuthenticationProviderInterface.

So I assume that my configuration is wrong, and somewhere I need to be explicitly setting the WordnikProvider, but I'm not sure where! Research has not provided any clues to this issue.

Any help would be much appreciated!

Files

2条回答
疯言疯语
2楼-- · 2019-02-21 00:49

the line return $this->authenticationManager->authenticate(new WordnikUserToken($username, $password, $this->providerKey)); in the WordnikListener goes to Symfony\Component\Security\Core\Authentication\AuthenticationProviderManager (classes.php) authenticate. $this->providers are DaoAuthentificationProvider, WordnikProvider and AnonymousAuthentificationProvider. From the DaoAuthentificationProvider it only uses the method supports($token): return $token instanceof UsernamePasswordToken && $this->providerKey === $token->getProviderKey();

which returns false so next in line is WordnikProvider.

Oh..misread: the error is in the constructor: parent::__construct($userChecker, $providerKey, $hideUserNotFoundExceptions); seems to fail. Running PHP 5.4.10 or so I DON'T have an error!!

Either rm -rf vendor and run composer install again or try using a different PHP version!!

查看更多
Ridiculous、
3楼-- · 2019-02-21 01:14

A had to create something like this a week ago. At the and, I created a custom user provider, where I simply call the api and with the response i create the user or not.

I would advise to read this:

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

查看更多
登录 后发表回答