0

这是我上一个问题的延续。

你好,

我在 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

您可以在此处查看完整的堆栈跟踪。

跟踪中的倒数第二行显示它正在加载 DaoAuthenticationProvider

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

但是我的任何配置都没有引用该提供程序或任何扩展它的东西。我的自定义提供程序直接实现了AuthenticationProviderInterface.

所以我假设我的配置是错误的,并且我需要在某个地方明确设置WordnikProvider,但我不确定在哪里!研究没有提供任何关于这个问题的线索。

任何帮助将非常感激!

文件

4

2 回答 2

1

该行返回 $this->authenticationManager->authenticate(new WordnikUserToken($username, $password, $this->providerKey)); 在 WordnikListener 中转到 Symfony\Component\Security\Core\Authentication\AuthenticationProviderManager (classes.php) 进行身份验证。$this->providers 是 DaoAuthentificationProvider、WordnikProvider 和 AnonymousAuthentificationProvider。从 DaoAuthentificationProvider 它只使用方法 supports($token): return $token instanceof UsernamePasswordToken && $this->providerKey === $token->getProviderKey();

它返回 false,因此下一行是 WordnikProvider。

Oh..misread:错误在构造函数中: parent::__construct($userChecker, $providerKey, $hideUserNotFoundExceptions); 似乎失败了。运行 PHP 5.4.10 左右我没有错误!!

rm -rf vendor 并再次运行 composer install 或尝试使用不同的 PHP 版本!

于 2013-02-22T04:35:20.703 回答
0

A 不得不在一周前创造出这样的东西。在 and,我创建了一个自定义用户提供程序,在这里我只需调用 api 并根据响应创建用户或不创建用户。

我建议阅读以下内容:

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

于 2013-02-21T22:20:08.610 回答