小编Max*_*ime的帖子

在Symfony2中使用自定义身份验证提供程序

我正在开发一个Symfony2应用程序,其API可用于其他应用程序.我想保护对API的访问.对于这部分我没有问题.

但是我必须使这个连接不是通常的登录/密码,而是使用API​​密钥.

所以我去了官方网站和它的精彩菜谱,用于创建自定义身份验证提供程序,正如我需要的,我对自己说.

这个例子不是我需要的,但我决定让它适应我的需要.

不幸的是我没有成功.

我会给你我的代码,之后我会解释我的问题.

这是我的工厂用于创建身份验证提供程序和侦听器:

<?php

namespace Pmsipilot\UserBundle\DependencyInjection\Security\Factory;

use Symfony\Component\DependencyInjection\ContainerBuilder;
use Symfony\Component\DependencyInjection\Reference;
use Symfony\Component\DependencyInjection\DefinitionDecorator;
use Symfony\Component\Config\Definition\Builder\NodeDefinition;
use Symfony\Bundle\SecurityBundle\DependencyInjection\Security\Factory\SecurityFactoryInterface;

class ApiFactory implements SecurityFactoryInterface
{
  /**
   * @param \Symfony\Component\DependencyInjection\ContainerBuilder $container
   * @param string $id
   * @param aray $config
   * @param string $userProvider
   * @param string $defaultEntryPoint
   * @return array
   */
  public function create(ContainerBuilder $container, $id, $config, $userProvider, $defaultEntryPoint)
  {
    $providerId = 'security.authentification.provider.api.'.$id;
    $container
      ->setDefinition($providerId, new DefinitionDecorator('api.security.authentification.provider'))
      ->replaceArgument(0, new Reference($userProvider))
    ;

    $listenerId = 'security.authentification.listener.api.'.$id;
    $listener = $container->setDefinition($listenerId, new DefinitionDecorator('api.security.authentification.listener')); …
Run Code Online (Sandbox Code Playgroud)

php dependency-injection symfony

10
推荐指数
1
解决办法
2万
查看次数

标签 统计

dependency-injection ×1

php ×1

symfony ×1