gpt4 book ai didi

php - 我的自定义工厂类中的 OutOfBoundsException

转载 作者:可可西里 更新时间:2023-11-01 01:03:27 25 4
gpt4 key购买 nike

我尝试在 Symfony 2 中创建一个自定义身份验证提供程序,只是为了好玩。我关注这个文档 http://symfony.com/doc/current/cookbook/security/custom_authentication_provider.html .

这是我做的:

安全.yml

providers:
facebook_provider:
id: facebook.security.provider
firewalls:
admin_area:
pattern: ^/
facebook:
check_path: /login_check
default_target_path: /
provider: facebook_provider

我用命名空间 Kmelkez\AuthBundle 创建了一个包

在命名空间 Kmelkez\AuthBundle\Security 中,我创建了自定义文件 FacebookFactory、FacebookListener、FacebookProvider、FacebookToken。

我将它们加载到我的 services.yml 文件中

服务.yml

 services:
facebook.security.provider:
class: Kmelkez\AuthBundle\Security\FacebookProvider

abstract_listener:
abstract: true
class: Symfony\Component\Security\Http\Firewall\AbstractAuthenticationListener

facebook.security.listener:
class: Kmelkez\AuthBundle\Security\FacebookListener
parent: abstract_listener

最后,在我的工厂自定义类中,现在我保持简单,我这样调用监听器和提供程序:

工厂类

  class FacebookFactory extends AbstractFactory
{
protected function createAuthProvider(ContainerBuilder $container, $id, $config, $userProviderId)
{
$providerID = 'facebook.security.provider' . $id;
return $providerID;
}

protected function getListenerId()
{
return 'facebook.security.listener';
}

public function getPosition()
{
return 'pre_auth';
}

public function getKey()
{
return 'facebook';
}
}

当我转到/login_check 路由时,出现异常:

OutOfBoundsException: The index "4" is not in the range [0, -1].

还有有用的堆栈跟踪:

在 Symfony\Component\DependencyInjection\Definition.php 中第255行在 Symfony\Component\DependencyInjection\Compiler\ResolveDefinitionTemplatesPass.php 中的 Definition->replaceArgument('4', 'admin_area')第127行在 Symfony\Component\DependencyInjection\Compiler\ResolveDefinitionTemplatesPass.php 第 50 行中的 ResolveDefinitionTemplatesPass>resolveDefinition('facebook.security.listener.admin_area', object(DefinitionDecorator))

有什么想法吗?

谢谢

最佳答案

终于找到问题了:

我的监听器扩展了一个抽象类:AbstractAuthenticationListener

因此,我将 services.yml 编辑为具有类似的内容:

facebook.security.listener:
class: Kmelkez\AuthBundle\Security\FacebookListener
parent: security.authentication.listener.abstract #this key is defined in security_listeners.xml
abstract: true

关于php - 我的自定义工厂类中的 OutOfBoundsException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17127210/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com