您好,
我正在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。
跟踪中的倒数第二行显示正在加载 DaoAuthenticationProvider
:
18 0.0217 1922792 Symfony\Component\Security\Core\Authentication\Provider\DaoAuthenticationProvider->__construct( ) ../appDevDebugProjectContainer.php:3071
但我的配置都没有引用该提供程序或任何扩展它的内容。我的自定义提供程序直接实现AuthenticationProviderInterface
。
所以我假设我的配置错误,我需要明确设置WordnikProvider
,但我不知道在哪里!研究没有为这个问题提供任何线索。
非常感谢任何帮助!
文件
答案 0 :(得分:1)
该行返回$ this-> authenticationManager-> authenticate(新WordnikUserToken($ username,$ password,$ this-> providerKey));在WordnikListener中去 Symfony \ Component \ Security \ Core \ Authentication \ AuthenticationProviderManager(classes.php) 认证。 $ this->提供者是DaoAuthentificationProvider,WordnikProvider和AnonymousAuthentificationProvider。 从DaoAuthentificationProvider它只使用方法支持($ token): 返回$ token instanceof UsernamePasswordToken&& $ this-> providerKey === $ token-> getProviderKey();
返回false,因此接下来是WordnikProvider。
哦..misread:错误在构造函数中: parent :: __ construct($ userChecker,$ providerKey,$ hideUserNotFoundExceptions);似乎失败了。运行PHP 5.4.10左右我没有错误!!
rm -rf供应商和再次运行composer安装或尝试使用不同的PHP版本!!
答案 1 :(得分:0)
A必须在一周前创造这样的东西。 在和,我创建了一个自定义用户提供程序,我只需调用api并使用响应创建用户。
我建议你阅读:
http://symfony.com/doc/2.0/cookbook/security/custom_provider.html